Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
LineStown
66 / 66 / 3
Регистрация: 04.08.2010
Сообщений: 420
Завершенные тесты: 1
#1

Ошибки потоков - C++

27.10.2010, 10:29. Просмотров 690. Ответов 3
Метки нет (Все метки)

День добрый.
Проблема с определением ошибки ввода потока
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
    setlocale(LC_ALL,"Russian");
    int a;
    while(true)
    {
        cout << "Input:";
        cin >> a;
        if(cin.good())
        {
            cin.clear();
            cout << "Correct" << endl;
            cin.ignore(10,'\n');
        }
        else
        {
            cin.clear();
            cout << "Not correct" << endl;
            cin.ignore(15,'\n');
        }
    }
    return EXIT_SUCCESS;
}
Суть: программа проверяет: если введено число - то правильно, иначе ошибка.
Но строку типа "2e2" - программа определяет как верное число.
Может я, конечно, не правильно понял значение cin.good()\
Хотелось бы услышать ваше мнение

Добавлено через 21 час 24 минуты
Мдя, не понятно, как работает флаг ошибки потока
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2010, 10:29     Ошибки потоков
Посмотрите здесь:

Удаление потоков C++
C++ Подмена потоков
C++ Семафоры(7 потоков)
Разделение потоков C++
C++ Вектор потоков
C++ Исключения потоков
C++ выбор потоков
C++ Синхронизация потоков в c++
C++ приоритет потоков
Синхронизация потоков C++
C++ Создание потоков
C++ синхронизация потоков

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Zerkalka
37 / 36 / 2
Регистрация: 09.03.2010
Сообщений: 79
27.10.2010, 10:45     Ошибки потоков #2
Про good() - The function returns true if none of the stream's error flags (eofbit, failbit and badbit) are set.
Причем тут числа?
Может функция isdigit подойдет? Правда проверять придется посимвольно...
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
27.10.2010, 12:39     Ошибки потоков #3
Цитата Сообщение от LineStown Посмотреть сообщение
Но строку типа "2e2" - программа определяет как верное число.
такую строку поток воспримет до первого "неверного" символа, то есть в число запишется только 2.
LineStown
66 / 66 / 3
Регистрация: 04.08.2010
Сообщений: 420
Завершенные тесты: 1
27.10.2010, 16:09  [ТС]     Ошибки потоков #4
Цитата Сообщение от fasked Посмотреть сообщение
такую строку поток воспримет до первого "неверного" символа, то есть в число запишется только 2.
Спасибо, все сразу стало ясно, флаг будет false, если сразу будет ошибочный символ в потоке, или будет считывать до первого неправильного.
Yandex
Объявления
27.10.2010, 16:09     Ошибки потоков
Ответ Создать тему
Опции темы

Текущее время: 13:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru