【问题标题】:Read whole lines from $stdin without pressing enter with crystal-lang从 $stdin 中读取整行,而无需使用 Crystal-lang 按 Enter
【发布时间】:2017-07-20 13:06:45
【问题描述】:

Read a single char from stdin without pressing enter类似的问题

如何使用 crystal-lang 阅读整行?我假设使用以下 Ruby 等效代码:

lines = $stdin.read
lines.each{|line| puts line}

【问题讨论】:

标签: crystal-lang


【解决方案1】:

同样,您使用STDIN.raw,但这次您想使用IO#gets 一次获取整行。最简单的方法是:

while line = STDIN.raw &.gets
  puts line
end

您也可以这样做:

STDIN.raw do |stdin|
  stdin.each_line do |line|
    puts line
  end
end

【讨论】:

  • 谢谢,但是,#raw 方法似乎总是需要 tty。这对我来说很不方便,因为我想将它用于竞争性编程
【解决方案2】:

将此代码与在线编译器一起使用

我只是直接使用STDIN

STDIN.each_line do |line|
  puts line
end

【讨论】:

  • 感谢这避免了“无法设置 IO#raw: Inappropriate ioctl for device (Errno)”错误消息 :)
【解决方案3】:

显然read 的等价物是STDIN.gets_to_end FWIW。

https://groups.google.com/forum/#!topic/crystal-lang/O4DExFHJc5E

【讨论】:

  • @rogerpack 谢谢,这是最理想的答案。我应该要求论坛。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-25
  • 2013-12-15
  • 1970-01-01
  • 2012-08-11
  • 2012-03-15
相关资源
最近更新 更多