gpt4 book ai didi

C++二进制文件 - 一遍又一遍地写入相同的数字

转载 作者:行者123 更新时间:2023-11-30 03:40:34 25 4
gpt4 key购买 nike

所以我有这段代码,非常简单:

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。这是结果,因为我不擅长解释:

Code result但是它应该是 0、1、2、... 19。我哪里弄错了?

最佳答案

我明白了,你正在读写同一个文件;你为什么不flushclose再次读取文件之前的流。参见 A good explanation to buffering in streams

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;
}

关于C++二进制文件 - 一遍又一遍地写入相同的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37910888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com