繁体   English   中英

从cin读取不同类型的输入

[英]reading different types of input from 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 时,在它无法将其作为整数读取后,它会以某种方式丢失缓冲区中的运算符。 例如,如果我输入“+”,则无法将其作为整数读取,因此将打印语句“not an int”。 但是,由于“+”不知何故在缓冲区中丢失了,因此没有任何内容可以读入 stringInput。 而对于其他字符串输入,它无法作为整数读取,并且该字符串仍然存在于缓冲区中,稍后可以将其读入 stringInput。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM