2

有没有类似的 peek(); (来自C ++)红宝石中的函数?有什么替代方法吗?

我找到了一种方法来做到这一点。

使用字符串扫描器:

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

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

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

2 回答 2

2

也许你可以使用ungetc. 试试看这里

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

于 2012-04-07T03:43:18.167 回答
1

Enumerator#peek让您查看 Enumerator 的下一个值。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"
...

当然,现在您在流上一次处理字节有点卡住了。

于 2012-04-07T16:19:47.523 回答