Задать вопрос
Ответы пользователя по тегу C++
  • Как сделать проверку на вводу в массив чисел?

    zergon321
    @zergon321
    cin при некорректном вводе в логическом контексте возвращает false:

    inline void clear_istream(std::istream& stream)
    {
    	while (stream.get() != '\n')
    		;
    }
    
    template <typename numeric> void check_error(std::istream& stream, numeric& x)
    {
    	while (!(stream >> x))
    		{
    			stream.clear(); //обновить флаги в std::cin, чтобы открыть дальнейший ввод
    			clear_istream(stream); //очистить ввод
    			std::cerr << "You entered wrong value. Please enter an integer number: ";
    		}
    }


    Просто вызовите check_error(std::cin, arr[i]);
    Ответ написан
    Комментировать