株式会社エス・スリー・フォー

3.2 辞書式順序の比較

辞書を編成する場合は、RWCString の辞書式順序の比較演算子が特に便利です。

RWBoolean operator==(const RWCString&, const RWCString&);
RWBoolean operator!=(const RWCString&, const RWCString&);
RWBoolean operator< (const RWCString&, const RWCString&);
RWBoolean operator<=(const RWCString&, const RWCString&);
RWBoolean operator> (const RWCString&, const RWCString&);
RWBoolean operator>=(const RWCString&, const RWCString&);

これらの演算子は、大文字と小文字を区別します。大文字と小文字を区別しないで比較をしたい場合は、次のメンバ関数を使います。

int RWCString::compareTo(const RWCString& str,
                         caseCompare = RWCString::exact) const;

次に、str が辞書的順序においてそれ自体より小さい、同等、または大きいかにより、ゼロより小さい整数、ゼロ、またはゼロより大きい整数を返す関数を示します。型 caseCompare は値を持つ列挙子です。

exact 大文字と小文字を区別する

ignoreCase 大文字と小文字を区別しない

デフォルト設定は exact で、論理演算子 ==、!= などと同じ結果をもたらします。

言語特定の文字列の照合には、次のメンバ関数を使います。

int RWCString::collate(const RWCString& str) const;

これは、標準 C ライブラリ関数 strcoll() をカプセル化したものです。この関数は、標準 C ライブラリ関数 setlocale() のカテゴリ LC_COLLATE によって設定された言語特有の照合規則によって計算された結果を返します。これは計算量が比較的多いので、次のようにグローバル関数を使って複数の文字列をあらかじめ変形することもできます。

RWCString strXForm(const RWCString&);

そして、結果に compareTo() または ==、!= などの論理演算子のいずれかを使用します。RWCString については、『Tools.h++ Class Reference』を参照してください。