你能否验证我的代码是否正确将字符串保存到struct?

时间:2016-11-27 05:26:18

标签: c++ structure stringstream

我试图从一个包含三个输入的文件(即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;
    }
}

1 个答案:

答案 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>