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


Высокоуровневая консоль ввода-вывода

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

Высокоуровневый ввод-вывод предоставляет выбор между функциями ReadFile и WriteFile, а также функциями ReadConsole и WriteConsole. Они идентичны, за исключением двух важных различий. Функции консоли поддерживают использование символов Юникода или символов ANSI, заданных с помощью вариантов A и W каждой функции; Функции ввода-вывода файлов не поддерживают Юникод, за исключением UTF-8, заданных константой CP_UTF8 для функций SetConsoleCP и SetConsoleOutputCP перед использованием. Кроме того, функции ввода-вывода файлов можно использовать для доступа к файлам, каналам и последовательным устройствам связи; Функции консоли можно использовать только с дескрипторами консоли. Это различие важно, если приложение использует стандартные дескрипторы, которые могли быть перенаправлены.

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

  • Эхо ввода клавиатуры в активный буфер экрана
  • Входные данные строки, в которых операция чтения не возвращается до нажатия клавиши ВВОД
  • Автоматическая обработка ввода клавиатуры для обработки возврата каретки, CTRL+C и других входных данных
  • Автоматическая обработка выходных данных для обработки упаковки линий, возврата каретки, внутренних пространств и других выходных сведений

Дополнительные сведения см. в следующих разделах: