next up previous contents index
: ネットワークインタフェース : ポート : ファイルに対する入出力ポート   目次   索引

文字列に対する入出力ポート

TUTSchemeは,文字列に対する入出力ポートをサポートしている. これによって,文字列をファイルのように取り扱うことが可能である.

(open-input-string 〈文字列〉) 【関数】

〈文字列〉 からの入力ポートを生成して返す.

例:
(read (open-input-string "Foo")) $\Rightarrow$ foo

(open-output-string [〈サイズ〉]) 【関数】

〈サイズ〉 の長さを持つ文字列を生成し, それに対する出力ポートを生成して返す. この出力ポートは,同時に生成された文字列へのインデックスを保持しており, 生成時点のインデックスは 0である. 以後,この文字列出力ポートに1文字出力されるたびに, インデックスの表す文字列の位置にその文字が格納され, インデックスは1だけ増加する. インデックスが,〈サイズ〉 で指定された文字列長に達した場合は, 文字列の長さが拡張される. インデックスは, reset-output-stringによって 0にリセットされる. 〈サイズ〉 には 0$\sim$ 33554428の整数が使え, デフォルト値は 128である.

(get-output-string 〈ポート〉) 【関数】

文字列への出力ポートである 〈ポート〉 に対して, 現在までにそのポートに出力された文字を,文字列として取り出す. つまり,〈ポート〉に対応する文字列の先頭から, 現在のインデックス位置の直前までの文字を文字列として返す. この関数はインデックスを 0にリセットしないので, 連続して呼び出すと,同じ内容の文字列が得られる.
(reset-output-string 〈ポート〉) 【関数】

文字列への出力ポートである〈ポート〉 のインデックスを 0にリセットする. つまり, 〈ポート〉 を初期化し, 現在までに出力された文字を無視することになる.
例:
> (define port (open-output-string))
port
> (get-output-string port)
""
> (write 'hello port)
hello
> (get-output-string port)
"hello"
> (write '(world) port)
(world)
> (get-output-string port)
"hello(world)"
> (reset-output-string port)
#t
> (get-output-string port)
""
> (write (list 'a 'b 'c) port)
(a b c)
> (get-output-string port)
"(a b c)"


next up previous contents index
: ネットワークインタフェース : ポート : ファイルに対する入出力ポート   目次   索引
Tsuneyasu KOMIYA 平成14年2月22日