c++ - 无法从文件中读取简单的二进制整数? (C++)

标签 c++ binary ifstream integer

我的代码是这样的:

更新:

#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/

相关文章:

c++ - 使用 std::vector<double> 访问 std::unique_ptr<double[2]> 管理的数据

c++ - 如何在 OpenCV 中对复杂矩阵进行逆运算?

mysql二进制日志仅删除日志

c++ - ifstream 读取二进制数据发出 0x00 字节

c++ - 为什么缓冲速度只会随着 ifstream 中缓冲区大小的增加而增加?

c++ - 如何检查 '\t' ?

c++ - Python 标准库的 C/C++ 等效项

c++ - 获取特定距离的键值对数组中第二大的数字

java - 在 java 中将 int 转换为 string 给出的答案为 1

java - 如何使用hibernate JPA 2以二进制形式存储uuid