类似的函数peek(); (来自C ++)Ruby

时间:2012-04-07 03:15:16

标签: c++ ruby peek

有没有类似的peek(); (来自C ++)函数在ruby中?有没有办法做到这一点?

我找到了办法。

使用StringScanner:

require 'strscan'
scanner = StringScanner.new(YourStringHere)
puts scanner.peek(1)

您也可以使用StringScanner扫描文件:

file = File.open('hello.txt', 'rb')
scanner = StringScanner.new(file.read)

2 个答案:

答案 0 :(得分:2)

也许你可以使用ungetc。试着看here

它不相等,但您可以获得相同的结果。

答案 1 :(得分:1)

Enumerator#peek让我们看一下枚举器的下一个值。 IO#bytes IO#chars将分别为字节流或字符流提供枚举器。由于你用“rb”打开,我假设你想要字节。

file = File.open('hello.txt', 'rb') # assume contains text "hello\n"
fstream = file.bytes

fstream.next # => "h"
fstream.peek # => "e"
fstream.next # => "e"
...

当然,现在你在流上处理时仍然遇到了字节。