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

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

Восстановить пароль Регистрация
 
LineStown
 Аватар для LineStown
63 / 63 / 3
Регистрация: 04.08.2010
Сообщений: 399
27.10.2010, 10:29     Ошибки потоков #1
День добрый.
Проблема с определением ошибки ввода потока
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++ Семафоры(7 потоков)
Разделение потоков C++
C++ Вектор потоков
C++ Исключения потоков
C++ выбор потоков
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Zerkalka
 Аватар для 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
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
27.10.2010, 12:39     Ошибки потоков #3
Цитата Сообщение от LineStown Посмотреть сообщение
Но строку типа "2e2" - программа определяет как верное число.
такую строку поток воспримет до первого "неверного" символа, то есть в число запишется только 2.
LineStown
 Аватар для LineStown
63 / 63 / 3
Регистрация: 04.08.2010
Сообщений: 399
27.10.2010, 16:09  [ТС]     Ошибки потоков #4
Цитата Сообщение от fasked Посмотреть сообщение
такую строку поток воспримет до первого "неверного" символа, то есть в число запишется только 2.
Спасибо, все сразу стало ясно, флаг будет false, если сразу будет ошибочный символ в потоке, или будет считывать до первого неправильного.
Yandex
Объявления
27.10.2010, 16:09     Ошибки потоков
Ответ Создать тему
Опции темы

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