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 (偽) を返す |