Страницы

Поиск по вопросам

воскресенье, 15 марта 2020 г.

Ввод Readline ограничен 266 символами. Как исправить

#c_sharp


Использую для консоли следующий код (С#)

Console.Write("Код гугл ");
string google_map = Console.ReadLine();


Нужно ввести код карты Google, он достаточно длинный и не влазит(((
Очень долго искал ответ. Пожалуйста помогите
    


Ответы

Ответ 1



Это, как оказалось, ограничение консоли. Попробуйте такой метод: var bufsize = 320; Stream stream = Console.OpenStandardInput(bufsize); TextReader inReader = (stream == Stream.Null) ? StreamReader.Null : TextReader.Synchronized( new StreamReader(stream, Console.InputEncoding, false, bufsize, true)); Console.SetIn(inReader); Выставьте размер буфера сколько нужно. Код честно подсмотрен ILSpy'ем в методе Console.In. Реальное ограничение — 254 символа: 256 байт размер буфера, плюс два байта резервируется под CRLF. Аналогично в случае ручной установки bufsize реальный размер будет на два байта меньше. В реальности, сделать буфер меньше, чем 256, у меня не получилось. Если вы захотите правильно обрабатывать символы других языков и выставите Console.InputEncoding = Encoding.Unicode;, не забывайте, что ваш буфер будет расходовать по два байта на символ. Если вы, например, установите размер буфера в 320, то это даст всего лишь 160 юникодных символов (и будет поднято автоматически до 256).

Комментариев нет:

Отправить комментарий