Zstring ptr は、標準の
Zstring を指すことができ、「ユーザー管理」
Zstring を実装するために使えます。
この場合、
Allocate /
Reallocate /
Deallocate を使って、サイズ、サイズ変更、破棄を行う必要があり、ユーザーがオーバーフローを回避する必要があります。
文字列の終端は、ヌル文字 (
0 ASCII) でマークされています。
これは、FreeBASIC 文字列操作関数によって、自動的に追加されます。
文字列が作成される時に、ヌル文字が追加されます。文字列の長さは、文字列の最初のヌル文字を走査することで計算できます。
ヌル文字(例えば
Chr(0))を、
Zstring のテキストに、含めることはできません。含めると、文字列の残りは切り捨てられます。
Zstring では、
Len は、含まれている文字列のサイズを返します。
Sizeof は、
Zstring に割り当てられたスペースを返します。
Sizeof 機能するのは、サイズがコンパイラに認識されている場合のみです。つまり、固定サイズの
Zstring 変数が、直接渡されます。間接参照されたポインターや、
Byref 関数の引数としてではありません。
Left のような組み込み文字列関数は、
Zstring に使えます。他の文字列演算子も同様に動作します。
この型は、C ライブラリとのインタフェースを簡単にしたり、ポインタで管理できない固定長文字列を置き換えるために提供されています。
Zstring ptr として宣言されたパラメータを参照する手続きには、文字列型の引数を直接渡すことができます。
コンパイラは、文字列型引数と
Zstring ptr 型パラメータの間で、自動変換(警告メッセージなしで)します。
Zstring に動的メモリを割り当てる場合、null 文字(
Zstring の終端文字)なしで文字列データを作成しないようにするため、最も安全なのは
Callocate を使うことです(最悪の場合、
Allocate を使い、2番目の例のように、文字列データを即座に割り当てます)。
注意:
二項演算子(代入、等号、+、*、...)の演算対象が、'
Zstring Ptr' ポインタ ('
pz') の逆参照に含まれる場合、他の演算対象に応じて、'
Zstring' 文字列または '
Ubyte' 変数を与えることができます。
他の演算対象が数値の場合、逆参照された '
Zstring Ptr' ポインタ ('
*pz') は、ポイントされた 1文字への '
Ubyte' 参照として扱われます。
'
Zstring' ポインター索引 '
[]' 演算子が、逆参照構文 ('
pz[n]') として使われる場合、これは基本的に'
String' 索引 '
[]' 演算子('
(*pz)[n]') の短縮バージョンです。