在C ++中strings
被复制,直到收到NULL
个字符,同时输入一系列字符。但是,如果您提供要读取的字符数,它是否会复制NULL
字符?我有一种情况,我可能会收到一条消息,其中间有一个NULL字符,后面仍然是有用的信息。同样的问题适用于追加。
对于find()
,同样会停止搜索是否遇到NULL
个字符?
答案 0 :(得分:3)
您应该能够构造一个包含'\0'
字符的字符串:
const char a[] = "Hello\0world";
std::string s(a, sizeof(a));
std::cout << "a = \"" << a << "\"\n";
std::cout << "s = \"" << s << "\"\n";
std::cout << "sizeof(a) = " << sizeof(a) << '\n';
std::cout << "strlen(a) = " << std::strlen(a) << '\n';
std::cout << "s.length() = " << s.length() << '\n';
以上代码段将打印
a = "Hello" s = "Helloworld" sizeof(a) = 12 strlen(a) = 5 s.length() = 12