关于用cout输出string,遇到'\0'的处理问题

在string类型变量接收的常量字符串中如果有'\0',.length()函数和用cout就会以第一个'\0'作为字符串的结尾。

为什么将string变量的一个元素改为'\0'后,string变量的.length()函数和用cout输出不会受到'\0'的干扰?

代码如下

    string str1 = "hello";

string str2 = "he\0llo";

cout << "length of str1:" << str1.length() << " str1:" << str1 << endl;

cout << "length of str2:" << str2.length() << " str2:" << str2 << endl;

cout << endl;

str1[2] = '\0';

cout << "length of str1:" << str1.length() << " str1:" << str1 << endl;

运行结果:

图片说明

回答

常量字符串是c风格的

以上是 关于用cout输出string,遇到'\0'的处理问题 的全部内容, 来源链接: utcz.com/a/36489.html

回到顶部