C++ 为多输入选择选项

C++ 为多输入选择选项,c++,class,input,istream,C++,Class,Input,Istream,这是我第一次使用这个网站,所以我会尽力适当地问我的问题 我正在处理一个名字类,它同时处理名字和姓氏。我遇到的问题是,在设置istream操作符>>时,我无法弄清楚如何让我的程序确定它是否已到达输入端。例如,如果我只想键入名字,让构造函数处理姓氏。当前的代码位将只读取名字,但当我给它第一个和最后一个名字时,它将把它们都作为名字来读取 istream& operator>>(istream& is, name& e){ string f; string l; is

这是我第一次使用这个网站,所以我会尽力适当地问我的问题

我正在处理一个名字类,它同时处理名字和姓氏。我遇到的问题是,在设置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;
};

提前谢谢你的帮助

无论是否输入了多个名称,您的if条件仅显示为检查eof

也许您可以将输入分解成一个数组,并使用sizeof检查多个名称


我不太熟悉istream的运行方式,但我希望您能发现这一点很有用。

您有两种输入选项的示例吗?虽然此答案的第一行可能在正确的行上,但如果结果基于运行时计算的内容-
sizeof()
,则使用
sizeof()是没有用的
在编译时完成。