控制台 I/O 有两种不同的方法,其中的选择取决于应用程序所需的灵活性和控制程度。 高级方法支持简单的字符流 I/O,但它限制了对主机 的输入 和 屏幕 缓冲区的访问。 低级别方法要求开发人员编写更多代码并在更多函数之间进行选择,但它也为应用程序提供了更大的灵活性。
应用程序可以使用文件 I/O 函数、 ReadFile 和 WriteFile 以及控制台函数 ReadConsole 和 WriteConsole 进行高级 I/O,以便间接访问主机的输入和屏幕缓冲区。 高级输入函数筛选并处理控制台输入缓冲区中的数据,以将输入作为字符流返回,放弃鼠标和缓冲区大小调整输入。 同样,高级输出函数会编写在屏幕缓冲区中当前光标位置显示的字符流。 应用程序通过设置主机的 I/O 模式来控制这些函数的工作方式。
低级别 I/O 函数提供对主机的输入和屏幕缓冲区的直接访问,使应用程序能够访问鼠标和缓冲区大小调整输入事件的大小以及键盘事件的扩展信息。 低级别输出函数使应用程序能够在屏幕缓冲区中的指定位置读取或写入指定数量的连续字符单元格,或者读取或写入到屏幕缓冲区中指定位置的矩形字符单元格块。 控制台的输入模式通过使应用程序能够确定是否将鼠标和缓冲区大小调整事件放置在输入缓冲区中,从而影响低级别输入。 主机的输出模式对低级别输出没有影响。
高级和低级别 I/O 方法不是互斥的,应用程序可以使用这些函数的任意组合。 但是,通常,应用程序使用一种方法或其他方法,我们建议专注于一个特定的范例,以获得最佳结果。
小窍门
理想的前瞻性应用程序将专注于高级方法,并在必要时通过高级 I/O 方法增加 虚拟终端序列 的进一步需求,以避免完全使用低级别 I/O 函数。
以下主题介绍控制台模式以及高级和低级别 I/O 函数。