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'
正在等待下一次读取。

请求的输入,即一个
可以满足,即读取操作成功。如果您想检查流是否继续进行,您需要阅读此内容。或者,您可以检查下一次流中的字符属于某种类型。

读取符合当前类型的字符(例如,数字和.for
double
)。以下字符保留在输入缓冲区中,供另一个提取运算符使用。如果读取的字符可以满足当前类型,则不会发出错误信号。

您的意思是
cin.fail()
在第一种情况下返回
false
,在第二种情况下返回
true
?我认为你的整个真、假的东西都错了。它应该返回与你所说的完全相反的结果。@minitech确实,我编辑了我的帖子。谢谢:)为什么会失败?这是一个数据流,提取的数字后面的字符已经准备好了r下一次阅读尝试。按照你的逻辑,一条流只能进行一次提取,这太愚蠢了。@LightnessRacesinOrbit:这就是我问的原因,为了知道。谢谢:)