1,string
getline
函数从给定的输入流中读入内容,直到遇到换行符为止。
若输入的一开始就是换行符,得到的就是空string。
string::size_type
size函数返回的是一个string::size_type类型的值
允许通用auto、decltype来推断size_type变量的类:(C++11新特性)
auto len =line.size(); //len的类型是string::size_type
string::size_type是一个无符号数。做比较时,假设n具有负数的int类型:
表达式s.size()<n的判断几乎肯定是true。因为负数和无符号数比较时,会自动转换成一个比较大的无符号值。
应该用decltype(s.size())作为n的类型。
字面值和string对象相加
当string对象和字符字面值混在一条语句中使用时,必须确保“+”的两侧的运算对象至少有一个是string:
string s1 = "hello", s2 = "world"
string s4 = s1 + ","; //正确:把一个string和一个字面值相加
string s5 = "hello" + "," //错误:两个运算对象都不是string
处理每个字符?使用基础范围的for语句(C++11新特性)
string str ("some string");
for (auto c:str) //对于str中的每个字符
cout <<c<<endl;
使用范围for语句改变字符串中的字符
把循环变量定义成引用类型即可:
string s ("Hello World");
for (auto &c:s) //c是引用
c = toupper(c); // c是引用,因此能改变s中字符的值
cout <<s<<endl;