为什么我的读取语句不能记录二进制数据

时间:2013-10-29 15:59:02

标签: c++ io

我有一个有两件的大文件。第一个是标题,使用标准字符并以[END]结尾。第二部分是二进制文件,类似于: NUL DLE NUL DC1 NUL 。我试图使用ifstream阅读本文档。我的代码是:

std::string filename = "file.txt";
std::ifstream originalFile;
originalFile.open(filename,std::ios::binary);

std::streampos fsize = 0;
fsize = originalFile.tellg();
originalFile.open(0,std::ios::end);
fsize = originalFile.tellg() - fsize;

char * buffer = new char [int(fsize)];
originalFile.seekg(0,std::ios::beg);
originalFile.reade(buffer,fsize);

std::cout << fsize << std::endl;
std::cout << buffer << std::endl;

当我运行它时,程序输出我文件的整个标题,然后结束。它不访问或打印任何二进制数据。这是正确使用的命令吗?如果没有,我还能尝试一些其他的东西吗?

1 个答案:

答案 0 :(得分:3)

你的文件数据转储(大概看起来像是std::cout << buffer << std::endl;)在它遇到它认为是C风格字符串结尾的NUL字符时停止。 / p>