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

Как освободить состояние потока ? - C++

Восстановить пароль Регистрация
 
wikikino
0 / 0 / 0
Регистрация: 09.11.2011
Сообщений: 15
23.02.2013, 12:02     Как освободить состояние потока ? #1
Здравствуйте. Нужна помощь. Вот небольшая часть моей программы
C++
1
2
3
4
5
6
7
8
9
10
11
12
int nr_block;
    while (true)
    if (cin>>nr_block,cin.good())
    {
        cout<<"It's OK "<<'\n';
        break;
    }
    else
    {
        cout<<"Attention, you need to enter an int expression. Try again. "<<'\n';
        cin.good() Не знаю что тут писать;
        }
Я ввожу значения до тех пора, пока не ввел значение типа "int", тогда значение cin.good() = true я пишу, что все ОК и выхожу. Если я ввел другое значение (например буквы), то программа заходит в else и выдает предупреждение. В этом else я должен потоку дать рабочее состояние и вновь вводить значения. Как это сделать ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
23.02.2013, 12:15     Как освободить состояние потока ? #2
C++
1
2
cin.flush(); // очистить поток
continue; // начать цикл while заново
wikikino
0 / 0 / 0
Регистрация: 09.11.2011
Сообщений: 15
23.02.2013, 12:18  [ТС]     Как освободить состояние потока ? #3
Цитата Сообщение от Van111 Посмотреть сообщение
C++
1
2
cin.flush(); // очистить поток
continue; // начать цикл while заново
Спасибо. А какой файл я должен подключить, что считать cin.flush() ? #include что ?
Jupiter
Каратель
Эксперт C++
6545 / 3965 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
23.02.2013, 12:48     Как освободить состояние потока ? #4
Цитата Сообщение от wikikino Посмотреть сообщение
#include что ?
iostream
wikikino
0 / 0 / 0
Регистрация: 09.11.2011
Сообщений: 15
23.02.2013, 12:53  [ТС]     Как освободить состояние потока ? #5
Цитата Сообщение от Jupiter Посмотреть сообщение
iostream
выдает ошибку. error C2039: flsuh не является членом "std::basic_stream<_Elem,_Traits>
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
23.02.2013, 13:01     Как освободить состояние потока ? #6
wikikino, будте проворливей
C++
1
   std::cin.clear();
wikikino
0 / 0 / 0
Регистрация: 09.11.2011
Сообщений: 15
23.02.2013, 13:09  [ТС]     Как освободить состояние потока ? #7
Программа зацикливается в else и все время выдает предупреждение. Поток, видимо, так и не очищается.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int nr_block;
    while (true)
    if (cin>>nr_block,cin.good())
    {
        cout<<"It's OK "<<'\n';
        break;
    }
    else
    {
        cout<<"Attention, you need to enter an int expression. Try again. "<<'\n';
        std::cin.clear(); // очищает состояние потока, тем самым позволяя еще раз ввести значение
        continue;
    }
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
23.02.2013, 13:20     Как освободить состояние потока ? #8
wikikino, будте проворливей

C++
1
2
        std::cin.clear(); // очищает состояние потока, тем самым позволяя еще раз ввести значение
        std::cin.sync();
Добавлено через 34 секунды
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
int main ()
{
 
int nr_block;
while (true)
{
 
    
    if ( cin >>nr_block)
    {
        cout<<"It's OK "<<'\n';
        
    }
    else
    {
        cout<<"Attention, you need to enter an int expression. Try again. "<<'\n';
        std::cin.clear(); // очищает состояние потока, тем самым позволяя еще раз ввести значение
        std::cin.sync();
        continue;
    }
 
    
 
}
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.02.2013, 13:59     Как освободить состояние потока ?
Еще ссылки по теме:

Как правильно освободить память C++
C++ Как освободить память после удаления объекта из вектора
Как освободить память занимаемую вектором и явно вернуть системе? C++
C++ Как правильно освободить память
Как правильно освободить память деструктором? C++

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

Или воспользуйтесь поиском по форуму:
wikikino
0 / 0 / 0
Регистрация: 09.11.2011
Сообщений: 15
23.02.2013, 13:59  [ТС]     Как освободить состояние потока ? #9
Все работает =) Большое спасибо =)
Yandex
Объявления
23.02.2013, 13:59     Как освободить состояние потока ?
Ответ Создать тему
Опции темы

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