这是我第一次使用这个网站,所以我会尽力适当地提出我的问题。
我正在处理一个处理名字和姓氏的名字类。我遇到的问题是,在设置istream运算符>>时,我无法弄清楚如何让程序确定它是否已到达输入结束。例如,如果我只想键入名字并让构造函数处理姓氏。这个当前位代码只会读取第一个名字,但是当我同时给它第一个和最后一个时,它会将它们作为名字读取。
istream& operator>>(istream& is, name& e){
string f;
string l;
is>>f;
if(is.eof())
{
e = name(f);
}
else
{
e = name(f,l);
}
return is;
};
提前感谢您的帮助!
答案 0 :(得分:0)
您的if条件仅在检查eof时出现,无论是否输入了多个名称。
也许您可以将输入分解为数组并使用sizeof检查多个名称?
我对istream的运作方式并不完全熟悉,但我希望你觉得这很有用。