@7ice

Проверка на числовой ввод. Как работает код?

Написал небольшую функцию проверки на числовой ввод(по примеру), но не понимаю как работает второй while.
Вот код:
double In(string text)
{
	cout << "Введите числовое значение " << text << ":";
	double x;
	while (!(cin >> x) or cin.get() != '\n')
	{
		cout << "Error!" << endl << "Введите числовое значение " << text << ":";
		cin.clear();
		while (cin.get() != '\n');
	}
	return x;
}
  • Вопрос задан
  • 1440 просмотров
Решения вопроса 1
myjcom
@myjcom Куратор тега C++
while (!(cin >> x) or cin.get() != '\n')
пока( не (прочитать из буфера ввода целое) или прочитанный из буфера символ не равен '\n')

не понимаю как работает второй while.

while (cin.get() != '\n');
так же.
пока(прочитанный из буфера символ не равен '\n') nop


Так получше будет
string s;
getline(cin, s);
istringstream is(s);
while(is >> s)
{
  int i = 0;
  try
  {
    i = stoi(s);
  }
  catch(exception& e)
  {
    cout << "Ошибка: " << e.what() << " " << s << "\n";
    continue;
  }
  cout << "i == " << i << "\n";
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы