![](/img/trans.png)
[英]c++ if(cin>>input) doesn't work properly in while loop
[英]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.