C ++字符串构造函数查找并追加空字符

时间:2013-04-18 15:28:12

标签: c++ string stdstring

在C ++中strings被复制,直到收到NULL个字符,同时输入一系列字符。但是,如果您提供要读取的字符数,它是否会复制NULL字符?我有一种情况,我可能会收到一条消息,其中间有一个NULL字符,后面仍然是有用的信息。同样的问题适用于追加。

对于find(),同样会停止搜索是否遇到NULL个字符?

1 个答案:

答案 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