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;
}