+=、append和assign之间对字符串操作需要注意的问题,先看如下代码:
char* ch_str = "ab\0cd"; std::string str1; str1 += ch_str; std::string str2; str2.assign(ch_str); std::string str3; str3.append(ch_str); std::cout << str1.length() << endl; std::cout << str2.length() << endl; std::cout << str3.length() << endl;
以上代码执行结果为:
在通过字符数组对字符串进行赋值的时候,如果没有指定字符串长度,系统自动截取第一个’\0’字符作为字符串的值,此时字符容器string对字符值不透明,关心字符数据。
以下代码:
char* ch_str = "ab\0cd"; std::string str1; str1 += ch_str; std::string str2; str2.assign(ch_str, 5); std::string str3; str3.append(ch_str, 5); std::cout << str1.length() << endl; std::cout << str2.length() << endl; std::cout << str3.length() << endl;
以上函数执行结果为:
以上为个人愚见,欢迎指正。