Как читать ввод с консоли до пробела или вводить в C # - PullRequest
0 голосов
/ 10 мая 2018

Я только начал изучать C #.Когда дело доходит до чтения ввода из консоли, я знаю, что есть Console.ReadLine(), который читает ввод до конца строки, но я хочу прочитать ввод до конца строки или пробела, что-то вроде std::cin вC ++.Ввод a b c должен быть в состоянии читать как:

a b c

или

a b
c

или

a
b c

или

a
b
c

и результат должен быть таким же.

1 Ответ

0 голосов
/ 11 мая 2018

Класс Console поддерживает два метода чтения.

Read() будет читать один символ ReadLine() будет читать все содержимое до конца строки (например, до символа Environment.NewLine.

Из приведенной выше информации видно, что вы просто хотите прочитать все по нескольким строкам, а затем разбить их на токены. Это можно сделать, взяв стандартный поток ввода и прочитав его до «конца» ...то есть при получении CTRL + Z .

using (var sr = new StreamReader(Console.OpenStandardInput(), Console.InputEncoding))
{
    var input = sr.ReadToEnd();

    var tokens = input.Replace(Environment.NewLine, " ").Split(" ");

    foreach (var t in tokens)
    {
        Console.WriteLine($"Token: \"{t}\"");
    }

    Console.Read();
}

enter image description here

...