C++ stringstream运算符输入失败
这个重载运算符有什么问题 我试图将C++ stringstream运算符输入失败,c++,parsing,stringstream,C++,Parsing,Stringstream,这个重载运算符有什么问题 我试图将stringstream解析为一个对象,该对象的成员a、b和c为整数 istream& operator>> (istream& in, Feedback& object) { cout << __PRETTY_FUNCTION__ << endl; in >> object.a; in >> object.b; in >> objec
stringstream
解析为一个对象,该对象的成员a
、b
和c
为整数
istream& operator>> (istream& in, Feedback& object) {
cout << __PRETTY_FUNCTION__ << endl;
in >> object.a;
in >> object.b;
in >> object.c;
cout << object.a << " " << object.b << " " << object.c << endl;
return in;
}
此cout
打印:
Feedback parseFeedbackData(unsigned char*, int): 10 2 4
输出重载运算符工作正常。您可以在下面找到代码:
ostream& operator<< (ostream& out, Feedback& object) {
cout << __PRETTY_FUNCTION__ << endl;
out << object.a << " " << object.b << " " << object.c;
return out;
}
ostream&operatorss.str().c_str()
的输出不一定能给出istringstream
对象的其他状态的线索
您应该添加测试以确保读取成功
istream& operator>> (istream& in, Feedback& object) {
cout << __PRETTY_FUNCTION__ << endl;
if ( !(in >> object.a) )
{
cout << "Problem reading a\n";
return in;
}
if ( !(in >> object.b) )
{
cout << "Problem reading b\n";
return in;
}
if ( !(in >> object.c) )
{
cout << "Problem reading c\n";
return in;
}
cout << object.a << " " << object.b << " " << object.c << endl;
return in;
}
istream和operator>>(istream和in、反馈和对象){
不能反对
{
cout>object.b)
{
cout>object.c)
{
这不是问题所在,但是您真的需要std::endl
所需要的额外内容吗?'\n'
结束一行。谢谢。它会按预期在第一个if中返回。
istream& operator>> (istream& in, Feedback& object) {
cout << __PRETTY_FUNCTION__ << endl;
if ( !(in >> object.a) )
{
cout << "Problem reading a\n";
return in;
}
if ( !(in >> object.b) )
{
cout << "Problem reading b\n";
return in;
}
if ( !(in >> object.c) )
{
cout << "Problem reading c\n";
return in;
}
cout << object.a << " " << object.b << " " << object.c << endl;
return in;
}