如何读取二进制文件数据并将其存储在C ++中的多个向量中?

时间:2015-02-27 11:04:45

标签: vector binary

我有一个从文本文件中读取数据的程序(包含3列数据,第1列和第2列是整数,第3列是双数)并将其存储到3个向量中。

#include<iostream>
#include<fstream>
#include<vector>
main()
{
vector<int>a,b;
vector<double>c;
int a1,b1;
double c1;
ifstream fin("<filename>.txt",ios::in | ios::binary);
if(fin.is_open()){
while(!fin.eof())
{
 fin>> a1 >> b1 >> c1;
if(fin){
a.push_back(a1);
b.push_back(b1);
c.push_back(c1);
}
 }
}
fin.close();
}

有人可以帮助我如何将数据存储到相同的3个向量中,如果它是二进制文件而不是文本文件

1 个答案:

答案 0 :(得分:0)

而不是

fin>> a1 >> b1 >> c1;

你应该将它用于普通的二进制文件(值之间没有分隔符):

fin.read((char*)&a1, sizeof a1);
fin.read((char*)&b1, sizeof b1);
fin.read((char*)&c1, sizeof c1);

>>运算符不能像您想要的那样处理二进制文件。

如果您在值之间有分隔符,则必须阅读它:

char buffer[LENGTH_OF_SEPARATOR];

fin.read((char*)&a1, sizeof a1);
fin.read(buffer, sizeof buffer);
fin.read((char*)&b1, sizeof b1);
fin.read(buffer, sizeof buffer);
fin.read((char*)&c1, sizeof c1);