我试图从一个包含三个输入的文件(即Mike Jones 60)中输入信息,然后将它们插入到结构C ++中,用于我的输出到屏幕。
struct Person {
string name;
int age;
};
void addData()
{
Person aPerson;
char fileName[80];
cout << "Please enter the file name: ";
cin.getline(fileName, 80);
//string fullName;
ifstream fin(fileName);
string tmp;
stringstream ss;
while (!fin.eof()) {
getline(fin, aPerson.name);
aPerson.name = tmp;
getline(fin, tmp);
ss << tmp;
ss >> aPerson.age;
ss.clear();
getline(fin, tmp);
ss.clear();
cout << aPerson.name << aPerson.age << endl;
}
}
答案 0 :(得分:1)
此代码将以此格式读取数据:
Joe Bloggs
42
Franziska von Karma
23
Jeff Jefferson
84
这是您输入数据的样子吗?
如果每人一行,并且每个人的名字中都有完全两个单词,则可以使用third parameter of getline
to set a custom delimiter - 而不是阅读整行,它会一直读到到了一个空间。
Joe Bloggs 42
Jeff Jefferson 84
Amy Anderson 57
要处理此数据:
…
while (!fin.eof()) {
string firstname;
getline(fin, firstname, ' ');
string surname;
getline(fin, surname, ' ');
aPerson.name = firstname + " " + surname;
string age;
getline(fin, age);
ss << age;
ss >> aPerson.age;
cout << aPerson.name << aPerson.age << endl;
ss.clear();
}
如果您可以使用逗号分隔数据格式或以制表符分隔的方式获取数据,或者以空格分隔的任何方式获取数据,则可以使用该分隔符并分两步提取数据而不是三步。 / p>