C++中'\0'的解释

o_y*_*eah 4 c++ string

#include<iostream>
#include<string>
using namespace std;
int main(){
    string i = "abc\0defg";
    cout<<i<<endl;
    // This prints "abc"

    string x = "abcdefg";
    x[3]='\0';
    cout << x << endl;
    // This prints "abcefg"
}
Run Code Online (Sandbox Code Playgroud)

我知道iC++ String 类的实例不会解释\0为字符串的结尾。为什么字符串i\0?之后遗漏了所有内容?stringi和 和有x什么不一样?

cig*_*ien 6

字符串文字"abc\0defg"是一个char const [9]. std::string没有接受数组的构造函数,但它可以接受char const *. 因此,当i与该构造函数一起使用时,它认为\0字符串内部表示字符串的结尾(实际上char const *通常如何计算字符串的结尾)。所以iabc在构造时包含。