我有一个包含 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/