c++ - 从文件重载运算符中读取一个单词 >>

标签 c++

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

比如我有这个类:

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

我有这个包含一些信息的文件:

詹姆斯 23994

安妮 23030

玛丽 300392

而我想要的是读取这些人的姓名和 ID 以将他们保存在我的类(class)中。

最佳答案

如果使用 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>>读取输入直到找到 ' '默认情况下,因此要“读一个词”你不需要做任何额外的事情。

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

关于c++ - 从文件重载运算符中读取一个单词 >>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56441672/

相关文章:

c++ - 从帧缓冲区 GLSL 读取到 OpenCV

java - 存储分析信标的最有效方法是什么?

c++ - Boost - shared_mutex 必须是同一个实例吗?

c++ - 如何读取 .rc 文件中 DLGINIT 结构中定义的字符串?

C++函数查找 vector 中的最小值+最大值元素

C++:#including <thread> 重新定义 winsock 函数 bind(...)?

c++ - std::string 到 char* 而不切割字节

c++ - 从 DLL 链接到 OpenGL : glew functions are null when running

c++ - 在汇编文件中调用 C++ 函数

c++ - 为什么模板只能在头文件中实现?