入力と出力の方法
コンソール I/O には 2 つの異なる方法があります。その選択肢は、アプリケーションのニーズの柔軟性と制御の量によって異なります。 高レベルのアプローチでは、単純な文字ストリーム I/O が可能になりますが、コンソールの入力バッファーとスクリーン バッファーへのアクセスは制限されます。 低レベルのアプローチでは、開発者がより多くのコードを記述し、より広範な関数の中から選択する必要がありますが、アプリケーションの柔軟性も向上します。
Note
低レベルのアプローチは、新規かつ継続的な開発には推奨されません。 低レベルのコンソール I/O 関数の機能を必要とするアプリケーションでは、仮想ターミナル シーケンスを使用し、クラシック関数と仮想ターミナルとエコシステム ロードマップの両方に関するドキュメントを確認することをお勧めします。
アプリケーションでは、ファイル I/O 関数、ReadFile 関数と WriteFile 関数、およびコンソール関数、ReadConsole と WriteConsole を使用して、コンソールの入力バッファーとスクリーン バッファーへの間接的なアクセスを提供する高レベル I/O を実現できます。 高レベルの入力関数は、コンソールの入力バッファー内のデータをフィルター処理して処理し、入力を文字のストリームとして返し、マウス入力とバッファーサイズ変更入力をディスカードします。 同様に、高レベル出力関数は、スクリーン バッファー内の現在のカーソル位置に表示される文字のストリームを書き込みます。 アプリケーションは、コンソールの I/O モードを設定することによって、これらの関数の動作方法を制御します。
低レベルの I/O 関数を使用すると、コンソールの入力バッファーとスクリーン バッファーに直接アクセスできるため、アプリケーションはマウスおよびバッファーサイズ変更入力イベントやキーボード イベントの拡張情報にアクセスできます。 低レベルの出力関数を使用すると、アプリケーションは、スクリーン バッファー内の指定された数の連続する文字セルの読み取りまたは書き込み、またはスクリーン バッファー内の指定した位置にある四角形の文字セル ブロックの読み取りまたは書き込みを行えます。 コンソールの入力モードは、マウス イベントとバッファー サイズ変更イベントが入力バッファーに配置されているかどうかをアプリケーションが判断できるようにすることで、低レベルの入力に影響します。 コンソールの出力モードは、低レベルの出力には影響しません。
高レベルおよび低レベルの I/O メソッドは相互排他ではなく、アプリケーションはこれらの関数の任意の組み合わせを使用できます。 ただし、通常、アプリケーションでは 1 つのアプローチまたはその他のアプローチのみを使用します。最適な結果を得るには、特定のパラダイムに焦点を当てることをお勧めします。
ヒント
理想的な将来を見据えたアプリケーションは、高レベルのメソッドに焦点を当て、低レベルの I/O 機能を完全に使用することを避ける必要がある場合は、高レベルの I/O メソッドを介して仮想ターミナル シーケンスを使用してさらにニーズを高めます。
次のトピックでは、コンソール モードと、高レベルおよび低レベルの I/O 関数について説明します。