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

Оъясните как работает консольный буфер ввода - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сортировка улучшенным пузырьком массива http://www.cyberforum.ru/cpp-beginners/thread94605.html
Здравствуйте. Похожие темы поднимались не один раз, но ни где нету примера сортировки улучшенным пузырьком многомерного массива:( Помогите пожалуйста разобраться. Вот примерное задание: Дан многомерный массив, размер произвольный. Отсортировать этот массив методом пузырька с двумя улучшениями. Вот список улучшений: 1. Если на очередном проходе не произошло не одного обмена, то это значит, что...
C++ Работа со строками в СИ++ Парни помагите напишите прогу если не втягость заранее благодарю))) Вот условие: Дана строка. Преобразовать ее, удалив каждый символ * и повторив каждый символ, отличный от *. http://www.cyberforum.ru/cpp-beginners/thread94600.html
C++ Многомерные массивы в СИ++
Парни напишите пажалуйста программу если не в тягость)) Вот условие: Определить, является ли заданная целая квадратная матрица n-го порядка симметричной (относительно главной диагонали).
Одномерные массивы в Си++ C++
Парни напишите пожалуйста программы буду благодарен...)) Вот условие: 1) Последовательность действительных чисел оканчивается нулем. Найти количество членов этой последовательности. 2) Дан массив действительных чисел. Среди них есть равные. Найти его первый максимальный элемент и заменить его нулем.
C++ Прозрачный фон у RaddioButton http://www.cyberforum.ru/cpp-beginners/thread94587.html
Скажите пожалуйста как можно зделать прозрачный фон.Например для Label есть Transparent.
C++ Сложение двух матриц Сложение двух матриц. Приведите пожалуйста простой пример... подробнее

Показать сообщение отдельно
QWAN
56 / 55 / 1
Регистрация: 02.09.2008
Сообщений: 181
15.02.2010, 10:02  [ТС]     Оъясните как работает консольный буфер ввода
Тема закрыта.
Консольный буфер чистить нужно!
Низкоуровневые функции обеспечивают прямой доступ к буферу вводимых данных, в отличие от высокоуровневых функций, которые фильтруют и обрабатывают информацию буфера вводимых данных, сбрасывая все, кроме ввода информации с клавиатуры
.
Поэтому, если я использовал низкоуровневую функцию PeekConsoleInput , я должен после нее очистить буфер. В своем приложении я сделал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Функция PeekConsoleInput читает данные из заданного консольного буфера ввода без удаления их из буфера
        if(!PeekConsoleInput(hStdin,    // дескриптор буфера ввода
                            pBuffer,    // буфер, в котором читаем
                            128,        // размер буфера чтения
                            &cNumRead))    // дескриптор буфера ввода
        {
            MessageBox(NULL, "ReadConsoleInput", "Console Error", MB_OK); 
            return 0;
        }//if(!PeekConsoleInput
        if(cNumRead)//Если PeekConsoleInput скопировал хоть что-то из буфера ввода то очищаем его
        {
            if(!FlushConsoleInputBuffer(hStdin)) //Очистка буфера
            {
                MessageBox(NULL, "FlushConsoleInputBuffer", "Console Error", MB_OK);
                return 0;
            }
        }//if(cNumRead)
Хотя, использовать функцию ReadConsoleInputв своем приложении я тоже мог. Для того чтобы программа не ожидала (зависала пока нет сообщения) можно было бы сначала проверить есть ли сообщения в буфере с помощью функции GetNumberOfConsoleInputEvents - выясняет число непрочитанных записей вводимых данных в буфере ввода. И если что то есть запустить ReadConsoleInput.
 
Текущее время: 05:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru