【发布时间】:2011-06-07 07:54:30
【问题描述】:
我的代码是这样的:
更新:
#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;
}
现在,写入部分似乎成功了,例如运行 32 位长的 od 命令(我的系统是 32 位)将显示正确的序列,包括十六进制转储。
然而,阅读时,我得到了不应该发生的随机序列和负整数(它被分割了,而且大部分是零,因为我的整数很小,符号位不应该打开。)
你知道为什么我的 read 方法无法正常工作吗,而它实际上与我的 write 方法相反?
【问题讨论】:
-
请贴一段完整的代码。
-
这是您的实际代码吗?如果是这样,您可能想在使用读取流之前尝试关闭或至少刷新写入流。
-
抱歉,我已经发布了整个代码。让我尝试刷新流。
-
啊,我缺乏完整的 C++ 知识。如果您可以将其发布为回复 Sven,我可以接受。它有效。
-
你不知道对
read的调用是否成功。始终检查返回值。
标签: c++ binary ifstream integer