C++ 将文件中的多行读取到类中

c++ reading multiple lines from a file into a class

本文关键字:读取 文件 C++      更新时间:2023-10-16

我有以下文本文件布局:

人:尤金·桑多瓦尔 ;26;雄
记者
艺术家
人:约翰娜·吉布斯;34;女性
马戏团工作人员
电影制片人
银行文员

第一行包含有关此人的一些信息,下一行是他或她以前的工作。

这是我做的类:

#pragma once
#include <string>
#include <vector>
class Person
{
public:
  Person() {};
  ~Person() {};
  std::string name;
  std::string age;
  std::string gender;
  std::vector<std::string> previousJobs;
  friend std::istream& operator >> (std::istream& is, Person& p)
  {
    std::string line;
    std::getline(is, line);
    std::istringstream iss(line);
    std::getline(iss, p.name, ';');
    std::getline(iss, p.age, ';');
    std::getline(iss, p.gender, ';');
    return is;
  }
};

主要:

int main()
{
     std::vector<Person> people;
     std::ifstream input_file("Resources/data.txt");
     Person p
     while (input_file >> p)
     {
        people.push_back(p);
     }
     getchar();
     return 0;
}

到目前为止,我已经成功地将第一行读入了对象。但我正在努力将以前的工作读入矢量。

成功读取文件的第一行并使用 istringstream 解析它后,您可以对其他行执行相同的操作。如果您确定单个文件包含有关一个人的信息,那么您可以自由使用:

while (![your_file].eof())
{
  previousJobs.push_back(getline(is,line));
}