2013-05-12 100 views
1

这是我第一次使用这个网站,所以我会尽我所能来适当地提出我的问题。选择多个输入的选项

我正在处理名字和姓氏的名称类。我遇到的问题是在设置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

你有没有两种输入方式的例子? – 2013-05-12 07:35:13

回答

0

如果条件只出现检查eof,无论是否输入多个名称,您的条件。

也许你可以将输入分解到一个数组中并使用sizeof检查多个名字?

我对istream的运作方式并不完全熟悉,但我希望你觉得这很有用。

+0

虽然这个答案的第一行可能是正确的,但当结果是基于运行时计算出来的东西时,使用'sizeof()'是没有用的 - 'sizeof()'是在编译时完成的。 – 2013-05-12 07:52:25