从cin

时间:2017-10-11 21:20:41

标签: c++ cin

当处理从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时,在它无法将其作为整数读取之后,它会以某种方式丢失缓冲区中的运算符。例如,如果我输入&#34; +&#34;,它将无法作为整数读取,因此它将打印语句&#34;而不是int&#34;。但是,因为&#34; +&#34;在缓冲区中以某种方式丢失,没有什么可以读入stringInput。对于其他字符串输入,它无法作为整数读取,并且该字符串仍然存在于缓冲区中,以后可以将其读入stringInput。

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

1 个答案:

答案 0 :(得分:1)

始终读取字符串,然后尝试转换。 &#34 + / - &#34;在您尝试读取数字时消耗,因为它们可以是数字的字符串表示的一部分