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了,避免混用in和unsigned可能带来的问题。
4.把 string 对象和字符字面值及字符串字面值混在一条语句中使用时,必须确保每个加号的两侧的运算对象至少有一个是string。但是可以用括号来分组。
std::string str = "!"; str = "Hello" + str + "World"; // 正确 str = "Hello"+ "World" + str; // 错误 str = "Hello" + ("World" + str); // 正确,括号里的结果会生成一个临时string
5.因为某些历史原因,也为了与C兼容,字符串字面值与string是不同类型。