首页 文章

从cin中读取不同类型的输入

提问于
浏览
1

当处理从cin读取不同类型的输入时,我原本以为开始读取就像输入是整数一样 . 如果失败,请将其作为字符串读取 .

它工作正常,直到我尝试读取“”,“ - ”等运算符 . 进入if(!fail)后,它会要求输入另一个输入(如“”,“ - ”之类的运算符) . 虽然,甚至不应该读入输入 .

这是代码:

void RPNCalc::run()
 {
    int numInput; bool boolInput = false; string stringInput; char charInput;
    while (stringInput != "quit")
    { 
        cin >> numInput;
        if (!cin)
        {
            cout << "not an int" << endl;
            cin.clear();
            cin >> stringInput;
            cout << stringInput << endl;
            readNonNumInput(stringInput, boolInput);
        } 
        else
        {
            Datum temp = Datum(numInput);
            calculator.push(temp);
        } 
    }
 }

当将操作符读入cin时,在它无法将其作为整数读取之后,它会以某种方式丢失缓冲区中的运算符 . 例如,如果我输入“”,则无法读取整数,因此它将打印语句“not an int” . 但是,由于“”在缓冲区中以某种方式丢失,因此无法读入stringInput . 对于其他字符串输入,它无法作为整数读取,并且该字符串仍然存在于缓冲区中,稍后可以将其读入stringInput .

这是我对这里发生的事情的理解 . 但我可能是错的 .

1 回答

  • 1

    始终读取一个字符串,然后尝试转换 . 当您尝试读取数字时会消耗“/ - ”,因为它们可能是数字的字符串表示的一部分

相关问题