【VisualStudio】テキストファイルの内容を標準入力にする方法
競技プログラミングの問題を解いていて、詰まったのでメモ。
標準入力とは?
プログラムが実行されると、「入力」に対して処理を行い、何らかの値が「出力」されます。この「入力」をするための入り口を標準入力といいます。
入り口(標準入力)から入ってきた値を受け取るのが、以下のコードになります。
var input = Console.ReadLine();
多くの場合、プログラムに何か値を渡そうと思ったら、キーボードを使って入力しますよね。実際に、上記のコードをコンソールアプリケーションで実行すると、キーボード入力が受け付けられます。キーボードで入力した値が標準入力という入り口を通ってプログラムに渡されるということです。
しかし、必ずしもキーボードだけとは限りません。テキストファイルの内容を読み取って、標準入力に渡すこともできます。
テキストファイルの内容を標準入力に渡す
以下のようなテキストファイルtest.txtがあるとします。
aaaa
bbbb
cccc
このテキストファイルの内容を、同じフォルダにあるinput.exeというプログラムに標準入力として渡すには、引数を以下のように指定します。
input.exe < test.txt
また、Visual Studioでデバッグしたいときは、プロジェクト名を右クリック⇒プロパティ⇒デバッグの「アプリケーション引数」に
< test.txt
を指定すれば、テキストファイルの内容を標準入力から受け取りつつデバッグ実行することができます。
標準入力をプログラムで処理する
標準入力をプログラムで処理する方法は、色々あると思いますが、例えば以下のようにすることが可能です。
var input = new List<string>();
string line;
while ((line = Console.ReadLine()) != null)
{
input.Add(line);
}
これでテキストファイルの内容がstring型のリストとして格納されますので、あとは好きに使ってプログラムを書くことができます。