wcsxfrm() - ワイド文字ストリングの変換

標準

標準/拡張機能 C/C++ 依存項目

ISO C 改訂
XPG4
XPG4.2
C99
Single UNIX Specification、バージョン 3

両方  

形式

#include <wchar.h>

size_t wcsxfrm(wchar_t * __restrict__wcs1, 
               const wchar_t * __restrict__wcs2, size_t n);

機能説明

wcs2 が指すワイド文字ストリングを文字照合重みを 表示する値に変形し、結果のワイド文字ストリングを wcs1 が指す配列に配置します。変換は、wcscmp() 関数が 2 つの変換されたワイド文字ストリングに 適用されると、同じ 2 つの元のワイド文字ストリングに適用された wcscoll() 関数の結果に対応して、ゼロより大きい値、等しい値、または小さい値を戻すというものです。終了 NULL ワイド文字コードを含む、n 個以下のエレメントだけが wcs1 によって指された結果の配列に配置されます。n がゼロの場合には、wcs1 は NULL ポインターになることが許可されます。オーバーラップした オブジェクト間でコピーが行われた場合には、動作は未定義です。

エラーを示すために予約された戻り値がないため、エラー状態を検査するアプリケーションは、errno を 0 に設定し、wcsxfrm() を呼び出してから、errno を検査する必要があります。

戻り値

変形されたワイド文字ストリングの長さ (終了 NULL ワイド文字 コードは除く) を戻します。戻された値が n またはそれを超える場合には、wcs1 が指す配列の内容は保証されません。

wcs1 が NULL ポインターの場合には、wcsxfrm() は 変形されたワイド・ストリングを入れるのに必要なエレメント数を 戻します。

無効のワイド文字コードの変形した値は、特定のロケール定義の ために選択されたオプションによって、有効なワイド文字コードの 変形した値より小さいか、または大きくなります。この場合には、wcsxfrm() は (size_t)-1 を戻します。

wcsxfrm() は、LC_COLLATE カテゴリーによって制御されます。

EILSEQ エラーを設定して、wcs2 が指す ワイド文字ストリングに照合シーケンスの範囲を超えるワイド文字コードが 入っていることを示すことができます。

注: ISO/C Multibyte Support Extensions は、wcsxfrm() 関数がエラーと一緒に戻れるかどうかを指示しません。

CELEBW28
⁄* CELEBW28 *⁄                                   
#include <stdio.h>                                                              
#include <wchar.h>                                                              
                                                                                
int main(void)                                                                  
{                                                                               
   wchar_t *wcs;                                                                
   wchar_t  buffer[80];                                                         
   int      length;                                                             
                                                                                
   printf("Type in a string of characters.¥n");
   wcs = fgetws(buffer, 80, stdin);                                             
   length = wcsxfrm(NULL, wcs, 0);                                              
   printf("You would need a %d element array to hold the wide string", length); 
   printf("¥n¥n%ls¥n¥ntransformed according", wcs);
   printf(" to this program's locale.¥n");
}                                                                               

関連情報