我想重载运算符 >>,这样我就可以从文件中读取一些数据并将其保存在我的类中。我的问题是我不知道如何阅读一个单词。为此是否存在像 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::string
和 int
:
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/