我的代码是这样的:
更新:
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char **argv)
{
ifstream r("foo.bin", ios::binary);
ofstream w("foo.bin", ios::binary);
int i;
int ints[10] = {0,1,2,3,4,5,6,8,9};
w.write((char*)&ints, sizeof(ints));
int in_ints[10];
r.read((char*)&in_ints, sizeof(in_ints));
for(i = 0;i < 10;i++) {
cout << in_ints[i] << " ";
}
cout << endl;
return 0;
}
现在,写入部分似乎是成功的,例如运行 od 命令与 32 位长(我的系统是 32 位)将显示正确的序列,包括十六进制转储。
然而,阅读时,我得到了随机序列,例如不应该出现的负整数(它被拆分了,并且大部分为零,因为我的整数很小,符号位不应该打开。)
当我的读取方法与我的写入方法相反时,您知道为什么我的读取方法无法工作吗?
最佳答案
在 r.read
之前尝试 w.flush()
或 w.close()
。问题是当您编写它时,它通常会缓冲文本并且不会将其保存在文件中。所以文件中没有任何内容用于r.read
。
关于c++ - 无法从文件中读取简单的二进制整数? (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6262189/