Как прочитать действительно длинную строку из STDIN в ruby? - PullRequest
0 голосов
/ 06 января 2019

Я использовал STDIN.gets для чтения строк из stdin в ruby, но я только что заметил, что эти строки должны быть короче 1024 символов. Ни один из следующих методов не будет читать строки длиной более 1024 символов:

STDIN.gets
STDIN.gets(2000)
STDIN.read
STDIN.readline

Фактически, интерпретатор даже не разрешит отправлять полные 1024 символа, поскольку ему нужно добавить разрыв строки, поэтому пользователь может набрать не более 1023 символов и нажать return.

Вы можете разбить строку на несколько строк, а затем удалить разрывы строк, но эти строки, вероятно, копируются / вставляются, поэтому сделать это будет невозможно, если только у интерпретатора нет способа сделать это автоматически .

Как я могу прочитать строку, которая длиннее, чем этот предел 1024?

1 Ответ

0 голосов
/ 07 января 2019

Похоже, что камень Readline не имеет этого ограничения. В моем тестировании строки длиной более 1400 символов не вызывали проблем. Это также относится и к моей версии, mini_readline. Я подозреваю, что это связано с тем, что оба этих гема работают с TTY в необработанном режиме и выполняют буферизацию, редактирование и т. Д. В Ruby, не используя системную буферизацию.

https://rubygems.org/gems/rb-readline

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...