Next: , Previous: , Up: Forth Tutorial   [Contents][Index]


3.24 Characters and Strings

スタック上では、 数と同様に文字がセルを占めます。 メモリ内では文字は独自のサイズ(ほとんどのシステムでは 8 ビットのバイト値)であるため、 メモリ・アクセスには文字独自のワードが必要です:

create v4 
  104 c, 97 c, 108 c, 108 c, 111 c,
v4 4 chars + c@ .
v4 5 chars dump

スタック上の文字列の推奨される表現は addr u-count です。ここで、addr は文字列の最初の文字のアドレスで、 u-count は文字列の文字数です。

v4 5 type

以下を使用すると文字列定数を取得できます

s" hello, world" .s
type

s" と文字列の間にスペースがあることを確かめてください。 s" は通常の Forth ワードであり、 空白(white space)で区切る必要があります(スペースを削除するとどうなるかを試してみましょう)。

ただし、 この s" のインタプリタでの使用(interpretive use)は非常に制限されています。 文字列は、 s" が次に呼び出されるまでの間だけ存在します(一部の Forth システムはこれらの文字列を複数保持しますが、 普通は未だ限られた寿命です)。

s" hello," s" world" .s
type
type

あなたは定義内で s" を使用することもでき、 (定義が続く限り、)その結果の文字列は永久に存続します:

: foo s" hello," s" world" ;
foo .s
type
type

研究課題(assignment): Emit ( c -- )c を(数値ではなく)文字として出力します。 これを使って type ( addr u -- ) を実装してみましょう。

こちらも参照ください: Memory Blocks