Методы ввода и вывода
Существует два различных подхода к вводу-выводу консоли, выбор которого зависит от того, сколько гибкости и контроля требуется приложению. Высокоуровневый подход обеспечивает простой поток ввода-вывода символов, но ограничивает доступ к входным и экранным буферам консоли. Низкоуровневый подход требует, чтобы разработчики писали больше кода и выбирайте один из более широких диапазонов функций, но он также дает приложению большую гибкость.
Примечание.
Подход низкого уровня не рекомендуется для новых и текущих разработок. Приложениям, нуждающимся в функциональных возможностях низкоуровневой консоли ввода-вывода, рекомендуется использовать последовательности виртуальных терминалов и изучить нашу документацию по классическим функциям и виртуальному терминалу и стратегии экосистемы.
Приложение может использовать функции ввода-вывода файлов, ReadFile и WriteFile, а также функции консоли, ReadConsole и WriteConsole для высокоуровневого ввода-вывода, предоставляющего косвенный доступ к входным и экранным буферам консоли. Высокоуровневый фильтр входных функций и обработка данных в входном буфере консоли для возврата входных данных в виде потока символов, дис карта при изменении размера мыши и буфера. Аналогичным образом высокоуровневые выходные функции записывают поток символов, отображаемых в текущем расположении курсора в буфере экрана. Приложение управляет тем, как эти функции работают, задав режимы ввода-вывода консоли.
Низкоуровневые функции ввода-вывода обеспечивают прямой доступ к входным и экранным буферам консоли, что позволяет приложению получать доступ к событиям ввода и изменения размера буфера и расширенным сведениям для событий клавиатуры. Низкоуровневые выходные функции позволяют приложению считывать или записывать в указанное число последовательных символьных ячеек в буфере экрана, а также читать или записывать в прямоугольные блоки символьных ячеек в указанном расположении в буфере экрана. Режимы ввода консоли влияют на низкоуровневые входные данные, позволяя приложению определить, помещаются ли события изменения размера мыши и буфера в входной буфер. Режимы вывода консоли не влияют на низкоуровневые выходные данные.
Высокоуровневые и низкоуровневые методы ввода-вывода не являются взаимоисключающими, и приложение может использовать любое сочетание этих функций. Как правило, приложение использует один подход или другой исключительно, и мы рекомендуем сосредоточиться на одной конкретной парадигме для оптимальных результатов.
Совет
Идеальное ориентированное приложение будет сосредоточиться на высокоуровневых методах и дополнительных потребностях с виртуальными последовательности терминалов через высокоуровневые методы ввода-вывода при необходимости избежать использования низкоуровневых функций ввода-вывода полностью.
В следующих разделах описываются режимы консоли и высокоуровневые и низкоуровневые функции ввода-вывода.
- Консольные режимы
- Высокоуровневая консоль ввода-вывода
- Режимы консоли высокого уровня
- Функции ввода и вывода консоли высокого уровня
- Последовательности виртуального терминала в консоли
- Классические функции и последовательности виртуальных терминалов
- Стратегия развития экосистемы
- Низкоуровневый ввод-вывод консоли
- Режимы консоли низкого уровня
- Низкоуровневые функции ввода консоли
- Функции вывода консоли низкого уровня