所以我有这个代码,非常简单:
struct Item{
int x;
};
int main(){
ofstream dat("file.bin", ios::binary);
Item chair;
for (int i = 0; i < 20; i++) {
chair.x = i;
dat.write((char*)&chair, sizeof(Item));
}
ifstream dat2("file.bin", ios::binary);
for (int i = 0; i < 20; i++) {
dat2.read((char*)&chair, sizeof(Item));
cout << chair.x << endl;
}
return 0; }
当我运行这段代码时,即使我总是将chair.x设置为i的值,当我读取第二个for循环中的条目时,读取的每个.x值都是19.这是结果,因为我不好解释:
答案 0 :(得分:2)
我明白了,你正在读写同一个文件;为什么在再次阅读文件之前,请不要{9}}或flush。见close
int main(){
ofstream dat("file.bin", ios::binary);
Item chair;
for (int i = 0; i < 20; i++) {
chair.x = i;
dat.write((char*)&chair, sizeof(Item));
}
dat.flush(); //Add this here
//dat.close(); //or this
ifstream dat2("file.bin", ios::binary);
for (int i = 0; i < 20; i++) {
dat2.read((char*)&chair, sizeof(Item));
cout << chair.x << endl;
}
return 0;
}