次のC#プログラムでは、「EOF!」のみが出力されると予想していました。コンソールで「Ctrl-Z」を押したら。代わりに、Enterキーを押すとすぐにプログラムが終了します。
var textReader = Console.In;
var sb = new StringBuilder();
while(textReader.Peek() != -1)
{
sb.Append((char)textReader.Read());
}
Console.WriteLine("Entered: '{0}'", sb);
Console.WriteLine("EOF!");
例:
12345 <= I entered this
Entered: '12345 <= program outputs this
'
EOF!
Press any key to continue . . .
誰かが上記の動作を説明できますか?それは私が期待したものではありません。
Consoleから複数行の入力を読み取るにはどうすればよいですか。一度に1文字で?
更新:以下の回答のとおり:問題は、Peek()が信頼できないことです。ただし、Read()の使用は機能します。