从文件重载运算符读取单词>>

时间:2019-06-04 10:04:06

标签: c++

我想重载运算符>>,因此我可以从文件中读取一些数据以将其保存在类中。我的问题是我不知道如何读一个单词。为此目的是否存在像get()或getline()这样的函数?

例如,我有一个此类:

class Person{
private:
      char * name; 
      int id;
public:
....

我在此文件中包含一些信息:

詹姆斯23994

安妮23030

玛丽300392

我想要的是读取这些人的姓名和ID,以将其保存在我的课程中。

1 个答案:

答案 0 :(得分:2)

如果您使用std::string而不是要求您分配内存,跟踪大小(或依靠空终止)等的裸露指针,事情就会变得容易些。

struct Person {
    std::string name;
    int id;
};

现在您可以将已经存在的operator<<用于std::stringint

std::istream& operator>>(std::istream& in, Person& p) {
    in >> p.name >> p.id;
    return in;
}

请注意,operator>>会读取输入,直到默认情况下找到一个' ',因此“读取单词”无需执行任何其他操作。

如果您坚持拥有私有字段,则应将运算符声明为该类的朋友。