【发布时间】:2015-12-23 20:31:27
【问题描述】:
我想读取我的二进制文件,但我遇到了一些麻烦。现在这是我得到的:
#include <iostream>
#include <fstream>
int main(int argc, char * argv[])
{
char data[1000];
std::fstream file(argv[0], std::ios::in | std::ios::binary);
file >> data;
std::cout << data;
system("PAUSE");
return 0;
}
出于某种原因,这只会打印前 3 个字符……就是这样。我不知道为什么它没有读取整个文件。有什么帮助吗?
【问题讨论】:
-
除了其他人指出的,请注意,当使用带有
char数组的格式化输入时,您应设置底层数组的大小!当您在没有设置file.width()的情况下执行file >> data;时,如果在数组大小用尽之前没有停止读取,则可能会出现缓冲区溢出!理想情况下,您应该避免直接对char数组使用格式化输入,而是使用std::string。当然,您的实际问题的答案是第三个字节被解释为空格,而您将使用未格式化的输入。