Я пытаюсь лучше понять поведение 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;
не запрашивает ввод пользователя, и не приписывает значение c
, которое было ранее возвращено в поток std::cin
, переменной cin
.
Примечание:
- Известно, что
std:: cin >>
пропускает пробелы (пробел, новая строка, табуляция и т. Д.)