std::istream& flush(std::istream& stream) // a manipulator
{
stream.clear();
return stream.ignore( stream.rdbuf()->in_avail() );
}
Глюк при некорректном вводе данных(С++)
Как избавиться от глюка на С++? К примеру переменная Х объявлена как int, а в exe-шнике в эту переменную вводится буква, прога начинает глючить :( . Зарание благодарен.
Цитата:
Originally posted by <ip>
Как избавиться от глюка на С++? К примеру переменная Х объявлена как int, а в exe-шнике в эту переменную вводится буква, прога начинает глючить :( . Зарание благодарен.
Как избавиться от глюка на С++? К примеру переменная Х объявлена как int, а в exe-шнике в эту переменную вводится буква, прога начинает глючить :( . Зарание благодарен.
Проверять, что вводится int, а не буква.
Цитата:
Originally posted by Green
Проверять, что вводится int, а не буква.
Проверять, что вводится int, а не буква.
:) То, что надо проверять это понятно, а по подробней...Привиди пожалуйста пример в 2-х строчках. Спасибо!!!
Цитата:
Originally posted by <ip>
Как избавиться от глюка на С++? К примеру переменная Х объявлена как int, а в exe-шнике в эту переменную вводится буква, прога начинает глючить :( . Зарание благодарен.
Как избавиться от глюка на С++? К примеру переменная Х объявлена как int, а в exe-шнике в эту переменную вводится буква, прога начинает глючить :( . Зарание благодарен.
int X_temp=(int)X
switch(X_temp)
{
case .......
}
Цитата:
Originally posted by <ip>
:) То, что надо проверять это понятно, а по подробней...Привиди пожалуйста пример в 2-х строчках. Спасибо!!!
:) То, что надо проверять это понятно, а по подробней...Привиди пожалуйста пример в 2-х строчках. Спасибо!!!
Что используешь для ввода? std::cin ?
Тогда надо написать манипулятор, т.к. стандартные потоки не умеют себя очищать.
Манипулятор простой, вот держи:
Код:
А используется это так:
Код:
int main()
{
int X =0;
do
{
std::cin >> flush >> X;
}
while( std::cin.fail() );
}
{
int X =0;
do
{
std::cin >> flush >> X;
}
while( std::cin.fail() );
}
Здесь пока пользователь не введет правильное значение, будет повторятся запрос ввода.
Цитата:
Originally posted by Green
Что используешь для ввода? std::cin ?
Что используешь для ввода? std::cin ?
scanf("%i",&x);
Цитата:
Originally posted by <ip>
scanf("%i",&x);
scanf("%i",&x);
Используй sdt::cin :D
Цитата:
Originally posted by Green
Используй sdt::cin :D
Используй sdt::cin :D
А какой синтаксис у этого оператора ? Первый раз об этом слышу :(
Цитата:
Originally posted by <ip>
А какой синтаксис у этого оператора ? Первый раз об этом слышу :(
А какой синтаксис у этого оператора ? Первый раз об этом слышу :(
Это не оператор, а экземпляр класса std::istream.
Но ты пока об этом не задумывайся.
Как использовать я показывал выше.
Не забудь подключить заголовочный файл iostream:
#include <iostream>
Цитата:
Originally posted by Green
Это не оператор, а экземпляр класса std::istream.
Но ты пока об этом не задумывайся.
Как использовать я показывал выше.
Не забудь подключить заголовочный файл iostream:
#include <iostream>
Это не оператор, а экземпляр класса std::istream.
Но ты пока об этом не задумывайся.
Как использовать я показывал выше.
Не забудь подключить заголовочный файл iostream:
#include <iostream>
Спасибо!!!:}