C++ Primer 笔记——标准库类型string

1.如果使用等号初始化一个变量,实际上执行的是拷贝初始化,编译器把等号右侧的初始值拷贝到新创建的对象中去;如果不使用等号则执行的是直接初始化。

std::string str = "Test";            // 拷贝初始化
std::string str1(10, 'c');            // 直接初始化

 

2.在用 std::cin 读取string的时候,string对象会自动忽略开头的空白(即空格符,换行符,制表符等)并从第一个真正的字符串开始读起,直到遇见下一处空白为止。例如你输入的是“   Hello World!   ”,输出的结果将是“Hello”。所以我们一般使用getline(),getline只要一遇到换行符就结束读取操作并返回结果。

std::string str;
std::cin >> str;            // 输入"   Hello World!  ",输出"Hello"
getline(std::cin, str);        // 遇到换行符结束

 

3.string 的 size() 函数返回的是一个 string::size_type 类型,它是一个能足够存放下任何string对象大小的无符号类型。如果一条表达式中已经有了size()函数就不要再用int了,避免混用int和unsigned可能带来的问题。

 

4.把 string 对象和字符字面值及字符串字面值混在一条语句中使用时,必须确保每个加号的两侧的运算对象至少有一个是string。但是可以用括号来分组。

std::string str = "!";
str = "Hello" + str + "World";            // 正确
str = "Hello"+ "World" + str;            // 错误
str = "Hello" + ("World" + str);        // 正确,括号里的结果会生成一个临时string


5.因为某些历史原因,也为了与C兼容,字符串字面值与string是不同类型。

 

posted @ 2018-01-04 20:32  MyCPlusPlus  阅读(224)  评论(0编辑  收藏  举报