我使用以下方法将 100,000 个整数保存到二进制文件中:
for(unsigned int i = 0; i < 100000; i++){
temp = generateRand(99999);
file.write(reinterpret_cast<const char*>(&temp),sizeof(temp));
}
从这个文件中,我试图读取整数,并将它们保存到一个 vector 中。
ifstream ifile;
ifile.open("test.bin",ios::binary);
ifile.seekg(0, ifile.end);
long size = ifile.tellg();
ifile.seekg(0, ifile.beg);
int restore = 0;
int count = 0;
while(ifile.tellg() < size){
ifile.read(reinterpret_cast<char*>(&restore), sizeof(restore));
v.push_back(restore);
count++;
}
但是我似乎只能读取 99328 个整数,而不是 100000。我对二进制文件的读/写比较陌生,所以你们能帮帮我吗?
最佳答案
看起来 file
对象在读取开始时仍处于打开状态,这导致了所描述的行为。
尝试调用 file.close()
来刷新缓冲区,然后才初始化 ifile
。
同时你会发现一次读取整个 vector 可以大大加快这个过程。
关于c++从二进制文件中读取整数,缺少一些数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42468440/