重载提取运算符

Overloading the extraction operator

我正在重载提取运算符以读取包含一对数字的节点。

如您所见,我正在打印一条消息,让用户知道他们正在输入哪个号码。但是,当我从文件中读取时,消息仍会打印出来。所以我想知道是否有办法检查我是从文件读取还是从键盘读取,或者是否有另一种方法可以避免在从文件读取时打印消息。

代码:

istream &operator>>( istream &input, nod &X )
{
    cout<<"Number 1: ";
    input>>X.info1;
    cout<<"Number 2 ";
    input>>X.info2;
    X.next=NULL;
    return input;
}

您根本不应该在流媒体运营商中与用户互动。
这不是它们的目的,operator>> 应该只读取流中的下一个对象。

相反,先交互再构造对象:

nod read_nod()
{
    int info1 = 0;
    cout << "Number 1: ";
    cin >> info1;
    int info2 = 0;
    cout << "Number 2: ";
    cin >> info2;
    return nod(info1, info2); 
}

istream & operator>> (istream &input, nod &X)
{
    input >> X.info1;
    input >> X.info2;
    X.next = NULL;
    return input;
}

nod read_nod()
{
    cout << "Enter two numbers for the nod: ";
    nod n;
    cin >> n;
    return n;
}