我试图重载 ifstream 运算符 >> 以便从文本文件中读取数据并将数据放在属于 State 的类中。
我正在阅读的文件格式是州名 > 州首府 > 人口。我只想将状态名称读入数组。
我一直遇到运算符重载的问题。我有点理解它并且能够使 ostream 工作,但事实证明读入更加困难。
不知道这是否有所作为,但这是为了学校作业,我仍在努力。只是不知道从这里去哪里。
主文件
这是我的主要 CPP 文件。
#include <iostream>
#include <string>
#include <fstream>
#include "State.h"
using namespace std;
int main(){
State s, h;
string null;
ifstream fin("states.txt");
while(fin.good())
{
fin >> h; //This doesn't read anything in.
fin >> null; //Dumping the Capital City to a null string
fin >> null; //Dumping the Population to a null string
}
cout << s; //Testing my overloaded << operator
system("pause");
return 0;
}
状态.cpp
这是一个辅助 CPP 文件。
#include "State.h"
#include <fstream>
#include <string>
#include <iostream>
using namespace std;
int i = 0;
string name, x, y;
State::State()
{
arrayStates[50];
}
//Trying to overload the input from fstream
ifstream& operator >> (ifstream& in, State h)
{
for(i = 0; i < 21; i++)
{
in >> h.arrayStates[i];
}
return in;
}
ostream& operator << (ostream& out, State s)
{
for(int i = 0; i < 21; i++)
{
out << s.arrayStates[i] << endl;
}
return out;
}
状态.h
这是包含我的类的头文件。
#include <iostream>
#include <string>
using namespace std;
class State{
private:
string arrayStates[50];
public:
State();
friend ostream& operator << (ostream& out, State s);
friend ifstream& operator >> (ifstream& in, State h);
};