重载提取运算符
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;
}
我正在重载提取运算符以读取包含一对数字的节点。
如您所见,我正在打印一条消息,让用户知道他们正在输入哪个号码。但是,当我从文件中读取时,消息仍会打印出来。所以我想知道是否有办法检查我是从文件读取还是从键盘读取,或者是否有另一种方法可以避免在从文件读取时打印消息。
代码:
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;
}