string标准库几个需要注意的两个地方

(1)string:size_type操作

      string的size()操作返回的是string::size_type类型的值,特别注意,不要将size的返回值赋给一个int变量。因为string::size_type是unsigned类型,所表示的最大整数值比对应的signed型要大一倍。即size_type存储的string长度是int所能存储的两倍。在16位int型机器上,int类型变量最大只能表示32767个字符的string对象,而能容纳一个文件内容的string对象轻易就会超过这个数字。所以,保存一个string对象size的最安全的方法就是使用标准库类型string::size_type.

(2)和字符串字面值的连接

      当string对象和字符串字面值混合连接操作时,“+” 操作符的左右操作数必须至少有一个是string类型的。

      string s1 = "hello" ;

      string s2 = ''world" ;

      string  s3 = s1 + "," ;          //OK

      string  s4 = "hello" + ","  ;  //error: no string operand

      string  s5 =  s1 + ","  +  "world" ;     //OK:each + has string operand

      string   s6 = "hello" + "," + s2 ;      //error: cant' find add string literals

例:通过以下循环将str对象的每一个字符置为'*':

for (string::size_type ix =0; ix != str.size(); ++ ix)  
    str[ix] = '*'; 


 

你可能感兴趣的:(string标准库几个需要注意的两个地方)