Function PEEK-CHAR
peek-char &optional peek-type input-stream eof-error-p eof-value recursive-p => char
peek-type - 文字か、tか、nil
input-stream - 入力ストリーム指定子。デフォルトは標準入力。
eof-error-p - generalized-boolean。デフォルトはtrue。
eof-value - オブジェクト。デフォルトはnil。
recursive-p - generalized-boolean。デフォルトはfalse。
char - 文字か、eof-value
peek-charは、input-streamから 実際に読み込むことをせず次の文字を取得し、 あとで読み込まれるように文字を残したままにします。 また、特定の文字が見つかるまで input-streamの文字をスキップし 文字による介入を無視するときにも使用されます。
もしpeek-typeが指定されなかったか、あるいはnilのとき、 peek-charは input-streamから文字を取り除くことをせずに 次に読み込まれる文字を返却します。 次回の入力は実行されたinput-streamのものであり、 その文字はまだそこに存在します。 もしpeek-typeがtのとき、 peek-charは空白文字をスキップし、 しかしコメントはスキップせずに、 次の文字のpeek-char処理を行います。 最後に調査された文字は、 その文字が開始のオブジェクトになるので、 input-streamから削除されません。 もしpeek-charが文字のとき、 peek-charは入力された文字に対して、 char=と同じものが見つかるまでスキップし、 その文字はinput-streamから削除されます。
もしファイルの終わりが発生し、 eof-error-pがfalseであるときは、 eof-valueが返却されます。
もしrecursive-pがtrueのとき、 この呼び出しはより上位レベルのreadによるものか、 Lispのリーダーによって使われる似たような関数から 埋め込まれたものであると見なされます。
input-streamがechoストリームであるとき、 文字はのぞき見だけが行われ、エコーはされません。 このような場合、peek-typeがnilではないとき、 peek-charによってのぞき見された文字は、 read-charによるものと同じように扱われるので、 unread-charで別段指定されない限りエコーされます。
(with-input-from-string (input-stream " 1 2 3 4 5")
(format t "~S ~S ~S"
(peek-char t input-stream)
(peek-char #\4 input-stream)
(peek-char nil input-stream)))
>> #\1 #\4 #\4
=> NIL*readtable*, *standard-input*, *terminal-io*
eof-error-pがtrueでありファイルの終わりに到達したときは、 型end-of-fileのエラーが通知されます。
peek-typeが文字であり、ファイルの終わりに到達し、 eof-error-pがtrueのときは、 型end-of-fileのエラーが通知されます。
recursive-pがtrueであり、ファイルの終わりに到達したときは、 型end-of-fileのエラーが通知されます。
なし。
なし。