【发布时间】:2011-07-16 05:29:03
【问题描述】:
为什么你可以在 std::basic_string 中插入一个 '\0' 字符并且 .length() 方法不受影响但是如果你调用 char_traits<char>::length(str.c_str()) 你会得到字符串的长度直到第一个 ' \0' 字符?
例如
string str("abcdefgh");
cout << str.length(); // 8
str[4] = '\0';
cout << str.length(); // 8
cout << char_traits<char>::length(str.c_str()); // 4
【问题讨论】: