我有一个包含 2 个整数的结构,我想将它们存储在一个二进制文件中并再次读取它。

这是我的代码:

static const char *ADMIN_FILE = "admin.bin";
struct pw {
  int a;
  int b;
};

void main(){
  pw* p = new pw();
  pw* q = new pw();
  std::ofstream fout(ADMIN_FILE, ios_base::out | ios_base::binary | ios_base::trunc);
  std::ifstream fin(ADMIN_FILE, ios_base::in | ios_base::binary);
  p->a=123;
  p->b=321;
  fout.write((const char*)p, sizeof(pw));
  fin.read((char*)q, sizeof(pw));
  fin.close();
  cout << q->a << endl;
}

我得到的输出是 0 。谁能告诉我是什么问题?

最佳答案

您可能想在读取 fout 之前刷新它。

要刷新流,请执行以下操作:

fout.flush();

这样做的原因是 fstreams 通常希望尽可能长时间地缓冲输出以降低成本。要强制清空缓冲区,请在流上调用flush。

关于C++如何将整数存储到二进制文件中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2508529/

10-13 08:41