2012-04-07 10 views
2

類似のpeek()がありますか? (C++から)関数のルビ?これを行うための代替手段はありますか?同様の機能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) 
+1

C++に慣れていない人にとって、 'peek'は入力を消費せずに次の文字を返します。 – Pubby

答えて

1

たぶん、あなたはungetcを使用することができます。 hereを見てください。

同じではありませんが、同じ結果を得ることができます。

+0

だから私は 'getc'を使い、次に 'ungetc'を使うのですか? –

+0

はい、できます。 (あなたのニーズに合った答えを受け入れることを忘れないでください:P) – dash1e

1

Enumerator#peek列挙子の次の値を見てみましょう。 IO#bytesIO#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" 
... 

今はちょっとストリーム上の時間処理でバイトして立ち往生しています。