为什么 std::cin 不提示用户输入?
Why std::cin doesn't prompt for user entry?
我正在尝试更好地理解 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.
}
我想知道是什么解释了 std::cin >> cin;
没有提示用户输入的事实,也没有将之前放回 std::cin
流中的 c
的值归因于变量 cin
.
注:
- 已知
std:: cin >>
跳过白色space(space、换行符、制表符等)
尝试添加这个
else
{
std::cin.clear(); // new
std::cin >> cin;
std::cout << "cin = " << cin << '\n';
}
因为您之前的输入失败std::cin
处于错误状态,在您清除错误状态之前,所有操作都会失败。
我正在尝试更好地理解 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.
}
我想知道是什么解释了 std::cin >> cin;
没有提示用户输入的事实,也没有将之前放回 std::cin
流中的 c
的值归因于变量 cin
.
注:
- 已知
std:: cin >>
跳过白色space(space、换行符、制表符等)
尝试添加这个
else
{
std::cin.clear(); // new
std::cin >> cin;
std::cout << "cin = " << cin << '\n';
}
因为您之前的输入失败std::cin
处于错误状态,在您清除错误状态之前,所有操作都会失败。