C++ 为什么cin.fail()不';输入后跟字符的数字时是否返回false?
我编写了以下简单代码:C++ 为什么cin.fail()不';输入后跟字符的数字时是否返回false?,c++,cin,C++,Cin,我编写了以下简单代码: #include <iostream> using namespace std; int main() { double s; cin >> s; if (cin.fail()) cout<<"Error"; return 0; } #包括 使用名称空间std; int main() { 双s; cin>>s; if(cin.fail()) cout因为它读的是'234.,这是一个有效的数字
#include <iostream>
using namespace std;
int main()
{
double s;
cin >> s;
if (cin.fail())
cout<<"Error";
return 0;
}
#包括
使用名称空间std;
int main()
{
双s;
cin>>s;
if(cin.fail())
cout因为它读的是'234.
,这是一个有效的数字。
您输入的其余内容,'abcd'
正在等待下一次读取。请求的输入,即一个双
可以满足,即读取操作成功。如果您想检查流是否继续进行,您需要阅读此内容。或者,您可以检查下一次流中的字符属于某种类型。读取符合当前类型的字符(例如,数字和.fordouble
)。以下字符保留在输入缓冲区中,供另一个提取运算符使用。如果读取的字符可以满足当前类型,则不会发出错误信号。您的意思是cin.fail()
在第一种情况下返回false
,在第二种情况下返回true
?我认为你的整个真、假的东西都错了。它应该返回与你所说的完全相反的结果。@minitech确实,我编辑了我的帖子。谢谢:)为什么会失败?这是一个数据流,提取的数字后面的字符已经准备好了r下一次阅读尝试。按照你的逻辑,一条流只能进行一次提取,这太愚蠢了。@LightnessRacesinOrbit:这就是我问的原因,为了知道。谢谢:)