我有一个从文本文件中读取数据的程序(包含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个向量中,如果它是二进制文件而不是文本文件
答案 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);