カウンタ付文字列(counted string)は、 指定のアドレスのバイトとして長さを格納し、 その後に文字列のバイトが続きます。 可能な長さは厳しく制限されており、 入力文字列を破壊せずにその場で部分文字列を作成することはできません。 したがって、 カウンタ付文字列を使用しないことをお勧めします。 それでも、 カウンタ付文字列を処理する必要がある場合、 以下のようなワード群があります:
count
( c-addr1 – c-addr2 u ) core “count”
c-addr2 は最初の文字で、 u は c-addr1 のカウンタ付文字列の、 長さです。
以下のワードは、 (s"
とは異なり) 有用なインタープリター機能(interpretation semantics)がなく、
([char]
とは異なり) 対応するインタプリタ用コードがないため、 コロン定義内でのみ使用する必要があります(コロン定義がある場合):
C"
( compilation "ccc<quote>" – ; run-time – c-addr ) core-ext “c-quote”
コンパイル状態: "
(二重引用符) を区切り文字として文字列 ccc をパースします。 その実行時コードは、
指定のカウンタ付文字列 ccc のアドレスを c-addr として返します。 インタープリター機能は未定義です。
( gforth-obsolete ) place
( c-addr1 u c-addr2 –) \ c-addr2
に長さ u のカウンタ付き文字列を作成し、 文字列 c-addr1 u をその場所にコピーします。
string,
( c-addr u – ) gforth-0.2 “string,”
文字列をカウンタ付き文字列として(here以降の)データ空間に書き込みます。