我使用以下方法将100,000个整数保存到二进制文件中:
for(unsigned int i = 0; i < 100000; i++){
temp = generateRand(99999);
file.write(reinterpret_cast<const char*>(&temp),sizeof(temp));
}
从这个文件中,我试图读取整数,并将它们保存到矢量中。
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个。我对二进制文件的读/写相对较新,所以你们可以帮助我吗?
答案 0 :(得分:2)
这对我有用。您可能忘记使用$search
标志或关闭流?
ios::binary
答案 1 :(得分:2)
当阅读开始时,file
对象看起来仍然打开,这导致所描述的行为。
尝试调用file.close()
来刷新缓冲区,然后才初始化ifile
。
你也会发现一次读取整个矢量可以大大加快这个过程。