【问题标题】:How to read a char array from a binary file in C++?如何从 C++ 中的二进制文件中读取 char 数组?
【发布时间】:2014-02-23 23:44:26
【问题描述】:

在你问我是否在发这篇文章之前搜索过信息之前(因为我知道你会问它),是的,我做过。

我正在做一个程序,我在将数据保存在二进制文件中后加载数据。当我尝试从二进制文件中读取数据时遇到问题,在寻找失败的几个小时后,我仍然不知道是什么。

首先,我将信息存储在二进制文件中:

ofstream of;

of << s.num;
of << s.array;

num 是 int,array 是 char 数组[kARRAY]

然后我试着这样读:

ifstream fi;

int auxNum;
char auxArray[kARRAY];

fi >> auxNum;
fi >> auxArray;

从二进制文件中读取信息后,我尝试将该值分配给另一个相同类型的变量,但我得到错误和更多错误...

char arrayResult[kARRAY];

arrayResult = auxArray;

我做错了什么?由于我是从二进制文件中读取,我应该使用特定的功能吗?

谢谢!

【问题讨论】:

  • SSCCE 会很有用。我真的不明白为什么该文件是二进制文件,我无法在我的计算机上尝试您的代码,因为我没有它。
  • 你遇到了什么错误?
  • 另外,您可能想要使用std::copy(auxArray, auxArray + kARRAY, arrayResult) 或改用std::string
  • 我得到的错误是“无效的分配矩阵”。该文件是二进制文件,因为扩展名为 .dat。
  • 请告诉我们您用于流的构造函数参数。此外,对于二进制数据,使用 std::vector 而不是 C 样式的数组更实用。

标签: c++ arrays binaryfiles binary-data


【解决方案1】:

试试这个:

int auxNum;
char auxArray[kARRAY];
fi.get(auxArray, kARRAY);

【讨论】:

  • 但是 auxNum 是独立于 auxArray 的
  • 抱歉,应该是 kARRAY。
  • 但是以这种方式读取需要以空字符结尾的字符串存储在二进制读取中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-29
  • 1970-01-01
  • 1970-01-01
  • 2012-12-28
  • 1970-01-01
  • 1970-01-01
  • 2019-04-04
相关资源
最近更新 更多