关于string

作者在 2008-08-05 23:29:24 发布以下内容
C++中的string是个有趣而又好用的类,
大家都熟悉s.size()吧,
那是不是都知道这个函数的反回值的类型呢?
准确地说,它的反回值是unsigned的string::size_type,
这对于一般从C转学C++的人来讲可真是算个误区了。
我自己就常常忽略了这个问题。。。
下面是一个输出语句:
 
string str("some string");
for(string::size_type i=0;i!=str.size();++i)
   cout<<str[i]<<endl;
 
这里用了string::size_type类型,而不是一般C语言里用的int,是有道理的。。。
它能够保证存储足够大的长度,
当然,你在这里就算真的用了int通常是也不出现什么错误,但只是通常……
在下面的例子里,就可以看出区别了:
 
int s;
string str("some string");
s=str.size();
 
想想看,这是一个怎样的赋值啊……
由于str.size返回的是unsigned型的,而unsigned型所能表示的最大正数值比int大一倍,
问题就出在这里了。。。
所以,这是一个特别需要注意的地方……
明白了这点,我自然也就能明白像
 
vector<int>::size_type
 
这样的类型存在的意义了……
 
 
技术分享 | 阅读 2368 次
文章评论,共0条
游客请输入验证码