繁体   English   中英

在阅读数学运算时,cin无法正常工作

[英]cin doesn't function properly while reading math operations

我试着编写一个函数,将表达式切割成标记,如下所示。

while(true)
{
    cin >> d_tmp;               
    if(!cin){
        cin.clear();
        cin >> ch_tmp;

        cout << ch_tmp << endl;
    }
    else
    {
        cout << d_tmp << endl;
    }
}

但是,该功能没有像我预期的那样工作。 当我输入一个随机数字和字符序列时它工作正常当我输入“a 3 b”时返回'a''3'和'b',但当我输入“3 + 4”时,所有返回的都是'3 '和'4'。

我用以下代码尝试了几个测试用例。 似乎如果我想让程序打印“3”+“4”,我必须输入“3 ++ 4”。 这让我很困惑。 任何人都对此有任何想法? 谢谢!

您声明变量的类型是:

int d_tmp;
char ch_tmp;

输入3 + 4 ,执行如下:

  • cin >> d_tmp; 读取3,读取空格,停止
  • if(!cin)为false,则转到else,然后打印3
  • cin >> d_tmp; 读取+ ,读取空间,错误
  • if(!cin)是真的
  • cin >> ch_tmp; 4

输入流的数字解析器将+12视为数字,因此如果它看到它将消耗+

“+”字符被cin >> d_tmp; 当它试图将其解析为int并设置失败标志时

暂无
暂无

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

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