Поделиться через


Методы ввода и вывода

Существует два различных подхода к вводу-выводу консоли, выбор которого зависит от того, сколько гибкости и контроля требуется приложению. Высокоуровневый подход обеспечивает простой поток ввода-вывода символов, но ограничивает доступ к входным и экранным буферам консоли. Низкоуровневый подход требует, чтобы разработчики писали больше кода и выбирайте один из более широких диапазонов функций, но он также дает приложению большую гибкость.

Примечание.

Подход низкого уровня не рекомендуется для новых и текущих разработок. Приложениям, нуждающимся в функциональных возможностях низкоуровневой консоли ввода-вывода, рекомендуется использовать последовательности виртуальных терминалов и изучить нашу документацию по классическим функциям и виртуальному терминалу и стратегии экосистемы.

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

Низкоуровневые функции ввода-вывода обеспечивают прямой доступ к входным и экранным буферам консоли, что позволяет приложению получать доступ к событиям ввода и изменения размера буфера и расширенным сведениям для событий клавиатуры. Низкоуровневые выходные функции позволяют приложению считывать или записывать в указанное число последовательных символьных ячеек в буфере экрана, а также читать или записывать в прямоугольные блоки символьных ячеек в указанном расположении в буфере экрана. Режимы ввода консоли влияют на низкоуровневые входные данные, позволяя приложению определить, помещаются ли события изменения размера мыши и буфера в входной буфер. Режимы вывода консоли не влияют на низкоуровневые выходные данные.

Высокоуровневые и низкоуровневые методы ввода-вывода не являются взаимоисключающими, и приложение может использовать любое сочетание этих функций. Как правило, приложение использует один подход или другой исключительно, и мы рекомендуем сосредоточиться на одной конкретной парадигме для оптимальных результатов.

Совет

Идеальное ориентированное приложение будет сосредоточиться на высокоуровневых методах и дополнительных потребностях с виртуальными последовательности терминалов через высокоуровневые методы ввода-вывода при необходимости избежать использования низкоуровневых функций ввода-вывода полностью.

В следующих разделах описываются режимы консоли и высокоуровневые и низкоуровневые функции ввода-вывода.