標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
ISO C 改訂 |
両方 |
#include <wchar.h>
int wcscoll(const wchar_t *wcs1, const wchar_t *wcs2);
wcs1 が指すワイド文字ストリングと wcs2 が指すワイド文字ストリングを比較します。これらは両方とも現行ロケールの LC_COLLATE カテゴリーに対して 適切なものと解釈されます。
wcscoll() は、wcs1 が指すワイド文字ストリングが、wcs2 が指すワイド文字ストリングより大きいか、等しいか、または小さいかによって、この両方のワイド文字ストリングが現行ロケールの LC_COLLATE カテゴリーに対して適切なものと解釈されたときに、ゼロより大きいか、等しいか、または小さい整数を戻します。
wcscoll() は、wcscmp() とは違います。wcscoll() 関数は、LC_COLLATE カテゴリーによって制御された言語照合規則に基づいて、2 つのワイド文字ストリング間の比較を行います。一方、wcscmp() は、ワイド文字コード間の比較を行います。
wcscoll() は、errno を設定してエラー条件を示しますが、エラーを示す戻り値がありません。エラーをチェックするために、errno をゼロに設定してから、wcscoll() からの戻り時にチェックするようにしてください。errno がゼロ以外なら、エラーが発生しています。
EILSEQ エラーを設定して、wcs1 引数 または wcs2 引数に照合シーケンスの範囲以外の文字が入って いるかどうかを示すことができます。
⁄* CELEBW07 *⁄
#include <stdio.h>
#include <wchar.h>
int main(void)
{
int result;
wchar_t *wcs1 = L"first_wide_string";
wchar_t *wcs2 = L"second_wide_string";
result = wcscoll(wcs1, wcs2);
if ( result == 0)
printf("¥"%ls¥" is identical to ¥"%ls¥"¥n", wcs1, wcs2);
else if ( result < 0)
printf("¥"%ls¥" is less than ¥"%ls¥"¥n", wcs1, wcs2);
else
printf("¥"%ls¥" is greater than ¥"%ls¥"¥n", wcs1, wcs2);
}
"first_wide_string" is less than "second_wide_string"