Solaris 動的トレースガイド

文字列代入

char * 変数の代入の場合とは異なり、文字列は、参照ではなく値ごとにコピーされます。文字列代入では、演算子 = により、元のオペランドの文字列の実バイトと NULL バイトが、左式の変数 (string 型) にコピーされます。string 型の変数を新しく作成するには、この変数に string 型の式を割り当てます。たとえば、次の D 文を参照してください。

s = "hello";

この D 文では、string 型の新しい変数 s が作成され、そこに 6 バイトの文字列 "hello" (出力可能文字 5 バイトおよび NULL バイト) がコピーされます。文字列代入は、C ライブラリ関数 strcpy(3C) とよく似ていますが、元の文字列がコピー先の文字列の記憶容量を超過した場合、最終的な文字列では、超過分が自動的に切り捨てられます。

文字列変数に、文字列と互換性のある型の式を代入することもできます。この場合、元の式が D コンパイラにより自動的に string 型に拡張され、文字列代入が行われます。D コンパイラには、char * 型または char[n] 型 (任意のサイズの char 型のスカラー配列) の任意の式を、string 型へと拡張する機能があります。