C言語 現在のロケールで文字列の比較 - string.h - [ strcoll ]

2008.11.19 Wednesday | by LRESULT


在のロケールで文字列の比較をするには、strcoll()を使用します。

strcmp()との違いは、ロケールのLC_COLLATEの設定を"JPN"にする事によって、
日本語(辞書順)での大小関係を比較出来ることのようです。
また、単純に文字列の一致判定をする場合には、strcmp()で事足ります。


strcoll
書式 char* strcoll( const char *s1, const char *s2 )
機能 現在のロケールで文字列の比較
引数 const char *s1 : 比較する文字列
const char *s2 : 比較する文字列
戻り値 s1 < s2 : 負の値
s1 = s2 : 0
s1 > s2 : 正の値





サンプルコード
strcoll()と、strcmp()の違いを見る為に
文字列「ABCD」と「abcd」の比較を両方の関数でしてみます。

#include <stdio.h>
#include <string.h>
#include <locale.h>

int main(void)
{
  char *s1 = "ABCD";
  char *s2 = "abcd";
  int ret;

  ret = strcmp( s1, s2 );
  printf( "%d¥n", ret );

  setlocale( LC_COLLATE, "JPN" );
  ret = strcoll( s1, s2 );
  printf( "%d¥n", ret );

  return 0;
}




結果
-1
1
と、表示されます。

strcmp()では文字コードで判定しているのに対して、
strcoll()では辞書順で判定している為に、こういう違いが出てくるようです。

カテゴリ:C言語 string.h | 23:00 | comments(0) | trackbacks(0) | -


コメントする











この記事のトラックバックURL

http://simd.jugem.jp/trackback/137

トラックバック