gtintesl 2020-07-29 21:49 采纳率: 100%
浏览 344
已采纳

关于用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;

运行结果:

图片说明

  • 写回答

2条回答 默认 最新

  • qiu_shaofeng 2020-07-29 22:54
    关注

    常量字符串是c风格的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?