我有一个矢量<char>用零字符串
vector<char> sectionData;
,我想看看它的content.I尝试以下
string sectionDataStr = string(sectionData.begin(),sectionData.end());
但我只得到sectionData的部分所呈现的字符串,因为sectionData包含零。我可以做什么,如果有的话我想要读取整个数据到字符串?
我不能老是使用std ::法院 感谢
我有一个矢量<char>用零字符串
vector<char> sectionData;
,我想看看它的content.I尝试以下
string sectionDataStr = string(sectionData.begin(),sectionData.end());
但我只得到sectionData的部分所呈现的字符串,因为sectionData包含零。我可以做什么,如果有的话我想要读取整个数据到字符串?
我不能老是使用std ::法院 感谢
您的问题不存在。这里有一个简单的例子:
#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', ' ')
*你正在*复制整个字符串。你只是不能以有意义的方式打印*。如果你只是'std :: cout << sectionDataStr'你应该事实上得到一切。 – 2013-02-17 11:49:37
您*成功*复制了整个字符串。尝试'fwrite(sectionDataStr.c_str(),1,sectionDataStr.size(),stdout);' – phoeagon 2013-02-17 11:55:57