collequiv() - 等価の照合エレメントのリストの戻し

標準

標準/拡張機能 C/C++ 依存項目
Language Environment 両方  

形式

#include <collate.h>

int collequiv(collel_t c, collel_t **list);

機能説明

基本の重みが c の基本の重みと同一の、すべての照合エレメントを検出します。次に、検出されたすべてのエレメントが保管されている配列の先頭エレメントを指すように、リストを更新します。エレメントのリストは、カテゴリー LC_ALLLC_COLLATE、または LC_CTYPE で setlocale() を次に呼び出すまで有効です。

collequiv() をもう一度呼び出すと、現行のリストがオーバーライドされる ことがあります。

setlocale() と locale.h の影響に関する詳細 は、「z/OS XL C/C++ プログラミング・ガイド」の『国際化: ロケールと文字セット』を参照してください。

戻り値

正常に実行された場合、collequiv() は、検出された照合エレメントの数を戻します。

c の値が、現行ロケールの照合エレメントの有効範囲にない場合は、collequiv() は -1 を戻します。

注 :
  1. 渡される照合エレメントが、LC_COLLATE カテゴリー で IGNORE の重みで指定されている場合は、戻されるリスト には、IGNORE として指定されたすべての文字が含まれます。
  2. リストには、現行ロケールの charmap ファイルで 定義された文字だけが含まれます。

CELEBC22
⁄* CELEBC22                                      

   This example prints the collating elements that have an                      
   equivalent weight as the collating element passed in                         
   argv[1].                                                                     
                                                                                
 *⁄                                                                             
#include "stdio.h"                                                              
#include "locale.h"                                                             
#include "collate.h"                                                            
#include "stdlib.h"                                                             
#include "wctype.h"                                                             
#include "wchar.h"                                                              
                                                                                
main(int argc, char *argv[]) {                                                  
   collel_t e, *rp;                                                             
   int i;                                                                       
                                                                                
   setlocale(LC_ALL, "");                                                       
   if ((e = strtocoll(argv[1])) == (collel_t)-1) {                              
      printf("'%s' collating element not defined¥n", argv[1]);
      exit(1);                                                                  
   }                                                                            
   if ((i = collequiv(e, &rp)) == -1) {                                         
      printf("Invalid collating element '%s'¥n", argv[1]);
      exit(1);                                                                  
   }                                                                            
   for (; i-- > 0; rp++) {                                                      
      if (ismccollel(*rp))                                                      
         printf("'%s' ", colltostr(*rp));                                       
      else if (iswprint(*rp))                                                   
         printf("'%lc' ", *rp);                                                 
      else                                                                      
         printf("'%x' ", *rp);                                                  
   }                                                                            
}                                                                               

関連情報