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

Reading a word from a file overloading operator >>

本文关键字:gt 读取 单词 文件 重载 运算符      更新时间:2023-10-16

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

例如,我有这个类:

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

我有这个文件,其中包含一些信息:

詹姆斯 23994

安妮 23030

玛丽·300392

我想要的是读出这些人的名字和ID,把他们保存在我的课堂上。

如果您使用 std::string 而不是需要您分配内存、跟踪大小(或依赖 null 终止(等的裸指针,事情会更容易......

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>>会读取输入,直到找到' ',因此要"读取单词",您无需执行任何额外的操作。

如果你坚持使用私有字段,你应该将运算符声明为类的友元。