string字符串之size_type

std::string::size_type

size_type是容器概念,没有容器不能使用。
由string类型和vector类型定义的类型,用以保存任意string对象或者vector对象的长度,标准库类型将size_type定义为unsigned类型

string抽象意义是字符串,size()的抽象意义是字符串的尺寸,string::size_type抽象意义是尺寸单位类型

string::size_type表示在不同的机器上,长度是可以不同的,并非固定的长度。使用此类型,可以使程序适合这个机器,与实际机器匹配。

string::size_type从本质上来说,是一个整型数。关键是由于机器的环境,它的长度有可能不同。

我们在使用string::find函数的时候,它返回的类型就是string::size_type类型。而当find找不到要找的字符的时候,它
返回的是npos的值,这个值是与size_type相关的。

eg:

        string  s
        int rc = s.find(.....); 
        if ( rc ==string::npos ) 

   //  这样在不同的机器平台上表现就不一样了

你的平台的string::size_type的长度正好和int相匹配,那么这个判断会侥幸正确。
但换成另外的平台,有可能 string::size_type的类型
是64位长度的,那么判断就完全不正确了。 所以,正确的应该是: string::size_type rc = s.find(.....);
这个时候使用 if ( rc == string::npos )就会正确了

st.size()表示st中字符数量,字符数量的统计是由1开始累计计算的,所以字符数量正好比字符串的下标索引数(由0开始累计计算)大1
这里的index!=st.size() 效果等同于 index < st.size();

原文链接:https://blog.csdn.net/hankern/article/details/90572592

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值