Solaris 動的トレースガイド

文字列比較

D では、二項関係演算子が多重定義されており、これらの演算子を使って、整数の比較だけでなく文字列の比較も行うことができます。関係演算子では、両方のオペランドが string 型であるか、一方のオペランドが string 型でもう一方のオペランドが string 型に拡張可能 (「文字列代入」を参照) であれば、文字列比較が行われます。文字列比較には、すべての関係演算子を使用できます。

表 6–1 文字列で使用できる D の関係演算子

<

左のオペランドは右のオペランドより小さい 

<=

左のオペランドは右のオペランド以下 

>

左のオペランドは右のオペランドより大きい 

>=

左のオペランドは右のオペランド以上 

==

左のオペランドは右のオペランドと等しい 

!=

左のオペランドは右のオペランドと等しくない 

整数で使用する場合と同じく、各演算子は、int 型の値 (条件が真の場合は 1、偽の場合は 0) を返します。

関係演算子では、C ライブラリルーチン strcmp(3C) の場合と同様に、2 つの入力文字列がバイト単位で比較されます。個々のバイトの比較には、ASCII 文字セット内の対応する整数値が使用されます (ascii(5) を参照)。NULL バイトが検出されるか、最大文字列長に達したら、比較は終了します。以下に、D の文字列比較とその結果の例を示します。

"coffee" < "espresso"

... 1 (真) を返す 

"coffee" == "coffee"

... 1 (真) を返す 

"coffee" >= "mocha"

... 0 (偽) を返す