C++ 为什么std::cin不';不提示用户输入?
我试图更好地理解C++ 为什么std::cin不';不提示用户输入?,c++,c++11,cin,C++,C++11,Cin,我试图更好地理解std::cin行为 让我们看看下面的代码: #include <iostream> int main()
std::cin
行为
让我们看看下面的代码:
#include <iostream>
int main()
{
char c, cin {'8'};
std::cin >> c; // enter '.'
std::cin.putback(c);
double d {88};
std::cin >> d; // expected to fail.
if (std::cin)
std::cout << "double d = " << d << '\n';
else
{
std::cin >> cin; // doesn't prompt user for entry neither put c into cin.
std::cout << "cin = " << cin << '\n';
}
std::cout << "d = " << d << '\n'; // just to check.
}
#包括
int main()
{
字符c,cin{'8'};
std::cin>>c;//输入“.”
标准:cin.回拨(c);
双d{88};
std::cin>>d;//预计会失败。
如果(标准::cin)
std::cout尝试添加此
else
{
std::cin.clear(); // new
std::cin >> cin;
std::cout << "cin = " << cin << '\n';
}
else
{
std::cin.clear();//新建
标准::cin>>cin;
std::cout尝试添加此
else
{
std::cin.clear(); // new
std::cin >> cin;
std::cout << "cin = " << cin << '\n';
}
else
{
std::cin.clear();//新建
标准::cin>>cin;
std::cout运行此程序时的输入是什么?我知道第一个字符输入是
,但之后是什么?换行符?@user4581301它只是用“8”初始化变量cin。我这样做只是为了跟踪变量的内容。因为std::cin>>d;
失败,在您可以从st读取之前失败d::cin
再次。如果没有clrear
ing,读取std::cin
会立即失败,无需等待。@john是的,我按Enter键。运行此程序时输入的是什么?我知道第一个字符输入是
,但后面是什么?换行?@user4581301它只需用“8”初始化变量cin“。我这样做只是为了跟踪变量的内容。因为std::cin>>d;
失败,在您可以再次读取std::cin
之前失败。如果没有clrear
ing,从std::cin
读取将立即失败,无需任何等待。@john yes,我按Enter键。