【发布时间】:2017-07-17 01:04:12
【问题描述】:
我正在使用以下方法将 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。我对二进制文件的读/写比较陌生,你们能帮帮我吗?
【问题讨论】:
-
temp的类型是什么?你得到的文件的大小是多少?你如何定义/打开file和ifile? -
哦,temp 是 int 类型。 generateRand 函数只生成随机整数。
-
在阅读之前你会关闭或销毁
file吗? -
没有。我在最后关闭文件和 ifile。
-
好吧,这就是你的答案)