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

Очистка потока ввода && строки - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 95, средняя оценка - 4.71
[WRG]
 Аватар для [WRG]
50 / 50 / 9
Регистрация: 20.11.2011
Сообщений: 243
Записей в блоге: 1
26.02.2013, 23:04     Очистка потока ввода && строки #1
как вобще грамотно очистить поток после ввода множества всяких вещей с клавиатуры?
если совсем не чистить то остаются нажатия клавиши enter, если применять такой код
C++
1
2
3
cin.clear();
while(cin.get() != '\n');
cin.get();
в конце каждой функции в программе, где происходит ввод, то в итоге пользователю приходится 4-5 лишних раз давить enter после ввода чего либо, т.е. эффект обратный. как реализовать очистку потока вывода грамотно?

и еще, есть функция
C++
1
2
3
4
5
6
7
8
void initialize_values(goods *db)
{
    for (int i = 0; i < base_size; i++) {
        strcpy(db[i].value, '\0');
        db[i].cost = 0;
        db[i].quantity = 0;
    }
}
инициализирует массив записей при старте программы. в дальнейшем предполагается использовать db[i].value как критерий существования записи: если строка нулевая, то запись пустая и её можно заполнить. но у меня почему то не получается использовать if(!db[i].value) { ...........}, он просто не срабатывет. причем если value инициализировано как strcpy(db[i].value, '\0') ,то программа выдает просто segmentation vault и не работает, а если strcpy(db[i].value, "\0"), то компилируется без ошибок, но опять же if(!db[i].value) { ...........} не работает. в чем ошибка?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2013, 23:04     Очистка потока ввода && строки
Посмотрите здесь:

Очистка потока ввода C++
Ввод данных в string, очистка потока ввода C++
Цикл и строки, очистка потока ввода C++
Телефонный справочник. Очистка потока ввода C++
Очистка потока ввода C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vua72
28.02.2013, 01:49     Очистка потока ввода && строки
  #21

Не по теме:

все претензии к Прате

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
[WRG]
 Аватар для [WRG]
50 / 50 / 9
Регистрация: 20.11.2011
Сообщений: 243
Записей в блоге: 1
28.02.2013, 21:05  [ТС]     Очистка потока ввода && строки #22
Цитата Сообщение от xtorne21st Посмотреть сообщение
C++
1
#define CIN_FLUSH if (std::cin.peek()) std::cin.ignore()
объясните что это пожалуйста и как юзать и как работает, нужно просто добавить этот макрос или еще в коде вызывать что либо?

Добавлено через 29 минут
разобрался с макросом, да еще и ошибочку в коде нашел, там динамическая память не очищалась в одном месте. с таким макросом поприятнее, но для выхода все еще нужно ввести q и дважды нажать enter
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.02.2013, 21:25     Очистка потока ввода && строки #23
12 пост прочли?
[WRG]
 Аватар для [WRG]
50 / 50 / 9
Регистрация: 20.11.2011
Сообщений: 243
Записей в блоге: 1
02.03.2013, 21:06  [ТС]     Очистка потока ввода && строки #24
благодарю, убрал и заработало!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2016, 17:57     Очистка потока ввода && строки
Еще ссылки по теме:

Выполнение цикла. Очистка потока ввода C++
C++ Класс Person. Очистка потока ввода
C++ Очистка потока

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

Или воспользуйтесь поиском по форуму:
sWINo_BACK_LAN
2 / 2 / 0
Регистрация: 30.03.2016
Сообщений: 20
29.11.2016, 17:57     Очистка потока ввода && строки #25
cin.sync();
Yandex
Объявления
29.11.2016, 17:57     Очистка потока ввода && строки
Ответ Создать тему
Опции темы

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