您能否验证我的代码是否正确地将字符串保存到结构?
Could you please verify if my code is correct for saving string to struct?
我正在尝试从具有三个输入(即(Mike Jones 60))的 .txt 文件中归档输入信息,并将它们插入结构 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;
}
}
此代码将读取以下格式的数据:
Joe Bloggs
42
Franziska von Karma
23
Jeff Jefferson
84
你的输入数据是这样的吗?
如果每人一行,并且每个人的名字中 恰好 两个词,您可以使用 third parameter of getline
to set a custom delimiter - 而不是阅读整行,它会一直读到 space.
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();
}
如果您可以获取逗号分隔数据格式、制表符分隔格式或任何非 space 分隔格式的数据,您可以使用该分隔符并将数据提取到两步而不是三步。
我正在尝试从具有三个输入(即(Mike Jones 60))的 .txt 文件中归档输入信息,并将它们插入结构 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;
}
}
此代码将读取以下格式的数据:
Joe Bloggs
42
Franziska von Karma
23
Jeff Jefferson
84
你的输入数据是这样的吗?
如果每人一行,并且每个人的名字中 恰好 两个词,您可以使用 third parameter of getline
to set a custom delimiter - 而不是阅读整行,它会一直读到 space.
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();
}
如果您可以获取逗号分隔数据格式、制表符分隔格式或任何非 space 分隔格式的数据,您可以使用该分隔符并将数据提取到两步而不是三步。