我有一个
vector<char> sectionData;
我想看看它的内容。我尝试以下
string sectionDataStr = string(sectionData.begin(),sectionData.end());
但是我只得到字符串中显示的部分sectionData,因为sectionData包含零。如果我想将整个数据读取到字符串中,我该怎么办?
我不能使用 std::cout 谢谢
你的问题不存在。这是一个简单的演示:
#include <string>
#include <iostream>
int main()
{
std::cout << std::string { 'a', '\0', 'b', '\0', 'c' } << std::endl;
}
现在检查输出:
$ ./a.out | hexdump -C
00000000 61 00 62 00 63 0a
## a \0 b \0 c \n
如您所见,一切都在那里。
或者(在您编辑之后):
#include <cstdio>
std::fwrite(sectionDataStr.data(), sectionDataStr.size(), stdout);
您的问题不在于字符串,而在于输出。根据您使用的内容,输出例程可能会在字符串中的第一个 0 处停止。如果您不希望这样,那么您可能需要使用以下内容将缓冲区转换为输出:
std::replace( sectionData.begin(), sectionData.end(), '\0', ' ' )