@PUTINVODKAGTA

Проверка корректности вводимых данных, некорректно отрабатывает функция! Где ошибка?

Код
int check_value(int &value)
	{		
		bool check = true;
		string temp = "";		
		do
		{				
			getline(cin, temp, '\n');
			for (int i = 0; i < temp.size(); i++)
			{				
				if (temp[i] != '2' && temp[i] != '3' && temp[i] != '4' && temp[i] != '5' && temp[i] != '6'
					&& temp[i] != '7' && temp[i] != '8' && temp[i] != '9' && temp[i] != '0' && temp[i] != '1'
					&& temp[i] == ' ')
				{
					cout << "Ошибка! Введите корректное значение:" << endl;
					cin.clear();
					check = false;
					break;
				}
				else
				{
					check = true;
				}
			}
			
			
		} while (!check);	
		if (check)
		{
			value = stoi(temp);
			return value;
		}
	}


Доброго времени суток!

Есть функция, которая проверяет корректность вводимых данных. Она должна выдавать ошибку, если введённое значение не является числом. Функция работает корректно во всех случаях, например: "2 a"- ошибка, "2 2" - ошибка. Но если ввести - ошибку не выдаёт. Через отладчик смотрел, когда доходит до "a", то считает значение правильным и не заходит внутрь if. В чем моя ошибка?

Спасибо.
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
В чем моя ошибка?

temp[i] == ' '

в этом. Должно быть !=
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы