在C++ strings
中被複制,直到接收到NULL
字符,同時以字符序列進行提供。但是如果您提供要讀取的字符數,它是否會複製超過NULL
字符?我有一種情況,我可能會收到一條消息,其中間有一個空字符,之後它仍然是有用的信息。同樣的問題適用於追加。CPP字符串構造函數查找並追加空字符
與find()
類似,如果它遇到NULL
字符,它會停止搜索嗎?
在C++ strings
中被複制,直到接收到NULL
字符,同時以字符序列進行提供。但是如果您提供要讀取的字符數,它是否會複製超過NULL
字符?我有一種情況,我可能會收到一條消息,其中間有一個空字符,之後它仍然是有用的信息。同樣的問題適用於追加。CPP字符串構造函數查找並追加空字符
與find()
類似,如果它遇到NULL
字符,它會停止搜索嗎?
您應該能夠構建含有'\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
如果你說的'的std :: string'然後是的,他們中間可以有\ 0。 std :: string不使用「以\ 0結尾」約定。他們有存儲大小的內存。所以他們可以用作緩衝區。 – Offirmo