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