【发布时间】:2014-08-23 03:47:50
【问题描述】:
我在这里遇到了一个错误,不知道为什么,我对 c++ 很陌生,如果您可以查看我的其余代码,以确保一切正常,那就太好了。
这两行出现错误。
getline(in, e.first, ',');
getline(in, e.last, ',');
这是说类Employee没有成员First,我知道它不在那个函数中,我该如何解决它?
这是我的其余代码。
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
struct Person {
string first;
string last;
};
struct Address {
string street;
string city;
string state;
string zipcode;
};
struct Employee {
Person name;
Address homeAddress;
int eid;
};
void readEmployee(istream& in, Employee& e);
void displayEmployee(ostream& out, const Employee& e);
int main(int argc, const char* argv[]) {
Employee e[50];
ifstream fin;
ofstream fout;
fin.open("employeesIn.txt");
if (!fin.is_open()) {
cerr << "Error opening employeesIn.txt for reading." << endl;
exit(1);
}
fout.open("employeesOut.txt");
if (!fout.is_open()) {
cerr << "Error opening employeesOut.txt for writing." << endl;
exit(1);
}
int EmployeePopulation = 0;
readEmployee(fin, e[EmployeePopulation]);
while (!fin.eof()) {
EmployeePopulation++;
readEmployee(fin, e[EmployeePopulation]);
}
fin.close();
for (int i = 0; i <= EmployeePopulation - 1; i++) {
displayEmployee(fout, e[i]);
}
fout.close();
cout << endl;
return 0;
}
void readEmployee(istream& in, Employee& e) {
string cidText;
if (getline(in, cidText, ',')) {
e.eid = stoi(cidText);
getline(in, e.first, ',');
getline(in, e.last, ',');
getline(in, e.homeAddress.street, ',');
getline(in, e.homeAddress.city, ',');
getline(in, e.homeAddress.state, ',');
string zipcodeText;
getline(in, zipcodeText, ',');
e.homeAddress.zipcode = stoi(zipcodeText);
}
}
【问题讨论】:
-
Employee没有成员first。Person有但不是Employee。 -
你会如何建议用我正在尝试做的事情来修复它?
-
您需要对通过
homeAddress成员变量访问的Address执行相同的操作。如果是Person,则需要添加.name成员变量(例如:getline(in, e.name.first, ','); -
我不明白你怎么能正确地写下接下来的三行,但仍然不知道如何处理这两个错误的行。这是完全相同的事情,只是使用不同的成员。你写过这段代码吗?
-
啊,非常感谢,我忘记了整个嵌套交易。
标签: c++ visual-c++ visual-studio-2012 getline