C++ string::size_type

C++中string类及其他大多数标准库类型都定义了几种配套的类型。这些配套类型体现了标准库类型与无关的特性,size_type是其中一种。

string::size_type它是一个无符号类型的值,能够存放下任何string对象的大小。string类型的索引也是一个size_type类型的。下标运算符 [ ] 接收的就是string::size_type类型。

当我们的程序需要在不同机器或者运行环境中使用的时候,定义为int就不太好,因为对应机器中的int可能较小,出现溢出。另外,如果我们的string特别长,远超int所能表示的范围,那么也是存在问题的。而size_type是一个设计为可以存放任何大小string对象的类型。

还有,应该尽可能避免无符号类型和int型数的比较。如果n是一个具有负值的int型,那么表达式 str.size()<n 的判断将坑定是 true。因为负数n,会自动转换为一个特别大的无符号类型的值。

所以,如果一个表达式已经有了 size() 函数,那就不要再使用int了。

以后自己编写程序一定要多多注意,养成习惯,虽然很多时候混用也没问题,但是这不是好习惯。
正确用法如下:

string str("abcdefghijklmnopqrstuvwxyz");
for(decltype(str.size()) i=0;i<str.size();++i)
{
    ............
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值