我想重载运算符>>,因此我可以从文件中读取一些数据以将其保存在类中。我的问题是我不知道如何读一个单词。为此目的是否存在像get()或getline()这样的函数?
例如,我有一个此类:
class Person{
private:
char * name;
int id;
public:
....
我在此文件中包含一些信息:
詹姆斯23994
安妮23030
玛丽300392
我想要的是读取这些人的姓名和ID,以将其保存在我的课程中。
答案 0 :(得分:2)
如果您使用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>>
会读取输入,直到默认情况下找到一个' '
,因此“读取单词”无需执行任何其他操作。
如果您坚持拥有私有字段,则应将运算符声明为该类的朋友。