string赋值问题

+=、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;

以上函数执行结果为:

 以上为个人愚见,欢迎指正。

posted @ 2018-01-25 09:25  TinyGreen  阅读(445)  评论(0)    收藏  举报