我的代码中有这个结构
struct Pair
{
int x,y;
friend bool operator==(Pair a, Pair b)
{
return a.x == b.x && a.y == b.y;
}
friend istream& operator>>(istream& is, Pair& a)
{
is >> a.x >> a.y;
return is;
}
friend ostream& operator<<(ostream& os, Pair a)
{
os << '(' << a.x << ',' << a.y << ')';
return os;
}
};
int main(){
Pair p;
fstream file;
string fileName = "Text.txt";
file.open(fileName.c_str(), fstream::in);
if(!file){
cout << "Could Not Open " << fileName << " File" << endl;
}else{
int size = 43;
int * myArray = new int[size];
for(int i = 0; i < size; i++){
file >> myArray[i];
}
printArray(myArray,size);
}
return 0;
}
从文本文件中读取
5 1 1 2 2 3 3 4 4 5 5
7 1 1 2 2 3 3 4 4 4 7 7 4 7 7
8 1 1 2 4 3 9 4 16 5 25 6 36 7 49 8 64
这个文件中有3个关系,每个关系以一个int开头,这是该关系中的对数,然后是许多对。然后(如果不是eof)再次读取另一个int和那么多对,依此类推。
如何将这些数据读入我的结构对?
答案 0 :(得分:0)
或多或少这样的事情:
#include <fstream>
#include <iostream>
#include <list>
#include <vector>
struct Pair
{
int x,y;
friend bool operator==(Pair a, Pair b)
{
return a.x == b.x && a.y == b.y;
}
friend std::istream& operator>>(std::istream& is, Pair& a)
{
is >> a.x >> a.y;
return is;
}
friend std::ostream& operator<<(std::ostream& os, Pair a)
{
os << '(' << a.x << ',' << a.y << ')';
return os;
}
};
int main()
{
std::fstream file;
file.open("Text.txt", std::fstream::in);
std::list<std::vector<Pair> > relations;
int size = 0;
while(file >> size)
{
relations.emplace_back(size);
for(int i=0; i < relations.back().size() && file >> relations.back()[i]; i++);
}
//Print
for(auto &r : relations)
{
std::cout << "[";
for(auto &p : r)
{
std::cout << p;
}
std::cout << "]\n";
}
return 0;
}