Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Глюк при некорректном вводе данных(С++)

9.9K
22 апреля 2005 года
<ip>
9 / / 22.04.2005
Как избавиться от глюка на С++? К примеру переменная Х объявлена как int, а в exe-шнике в эту переменную вводится буква, прога начинает глючить :( . Зарание благодарен.
3
22 апреля 2005 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by <ip>
Как избавиться от глюка на С++? К примеру переменная Х объявлена как int, а в exe-шнике в эту переменную вводится буква, прога начинает глючить :( . Зарание благодарен.



Проверять, что вводится int, а не буква.

9.9K
22 апреля 2005 года
&lt;ip&gt;
9 / / 22.04.2005
Цитата:
Originally posted by Green
Проверять, что вводится int, а не буква.



:) То, что надо проверять это понятно, а по подробней...Привиди пожалуйста пример в 2-х строчках. Спасибо!!!

410
22 апреля 2005 года
Tavix
70 / / 20.05.2000
Цитата:
Originally posted by <ip>
Как избавиться от глюка на С++? К примеру переменная Х объявлена как int, а в exe-шнике в эту переменную вводится буква, прога начинает глючить :( . Зарание благодарен.



int X_temp=(int)X
switch(X_temp)
{
case .......
}

3
22 апреля 2005 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by <ip>
:) То, что надо проверять это понятно, а по подробней...Привиди пожалуйста пример в 2-х строчках. Спасибо!!!



Что используешь для ввода? std::cin ?
Тогда надо написать манипулятор, т.к. стандартные потоки не умеют себя очищать.

Манипулятор простой, вот держи:

 
Код:
std::istream& flush(std::istream& stream)   // a manipulator
{
    stream.clear();
    return stream.ignore( stream.rdbuf()->in_avail() );
}


А используется это так:
 
Код:
int main()
{
    int X =0;
    do
    {
        std::cin >> flush >> X;
    }
    while( std::cin.fail() );
}

Здесь пока пользователь не введет правильное значение, будет повторятся запрос ввода.
9.9K
22 апреля 2005 года
&lt;ip&gt;
9 / / 22.04.2005
Цитата:
Originally posted by Green
Что используешь для ввода? std::cin ?




scanf("%i",&x);

3
22 апреля 2005 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by <ip>
scanf("%i",&x);



Используй sdt::cin :D

9.9K
22 апреля 2005 года
&lt;ip&gt;
9 / / 22.04.2005
Цитата:
Originally posted by Green
Используй sdt::cin :D



А какой синтаксис у этого оператора ? Первый раз об этом слышу :(

3
22 апреля 2005 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by <ip>
А какой синтаксис у этого оператора ? Первый раз об этом слышу :(



Это не оператор, а экземпляр класса std::istream.
Но ты пока об этом не задумывайся.

Как использовать я показывал выше.
Не забудь подключить заголовочный файл iostream:
#include <iostream>

9.9K
25 апреля 2005 года
&lt;ip&gt;
9 / / 22.04.2005
Цитата:
Originally posted by Green
Это не оператор, а экземпляр класса std::istream.
Но ты пока об этом не задумывайся.

Как использовать я показывал выше.
Не забудь подключить заголовочный файл iostream:
#include <iostream>




Спасибо!!!:}

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог