您能否验证我的代码是否正确地将字符串保存到结构?

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 分隔格式的数据,您可以使用该分隔符并将数据提取到两步而不是三步。