名前 | 形式 | 機能説明 | 戻り値 | エラー | 使用法 | 属性 | 関連項目
#include <wchar.h>size_t wcsxfrm(wchar_t *ws1, const wchar_t *ws2, size_t n);
wcsxfrm() と wsxfrm() の両関数は、 ws2 が示すワイド文字列を変換して、その結果を ws1 が示す配列に書き出します。変換は、 ある 2 つの変換済みワイド文字列に対して wcscmp(3C) または wscmp(3C) 関数を実行したとき、関数が返す値が変換前の文字列に対して wcscoll(3C) または wscoll(3C) が返したであろう値 (0、0 より大きい、0 より小さいのいずれか ) と一致する値を返すように行われます。 n は、 ws1 が指す配列に出力するワイド文字コードの最大数を表します。 この数には、終端の NULL ワイド文字コードも含まれます。 n が 0 の場合、 ws1 は NULL ポインタでもかまいません。 重なりあうオブジェクト間で複写を行うと、 その結果は未定義です。
wcsxfrm() および wsxfrm() 関数は、変換後のワイド文字列の長さを返します。 これには終端の NULL ワイド文字コードは含まれません。 戻り値が n 以上の値の場合、 ws1 が示す配列の内容は予測できません。
エラーが発生すると、 wcsxfrm() および wsxfrm() は ( size_t ) -1 を返し、エラーを示す値を errno に設定します。
wcsxfrm() および wsxfrm() 関数は、以下の状態のときエラーを返します。
ws2 が示すワイド文字列に、照合手順に定義されていない ワイド文字コードが含まれている。
関数はサポートされていない。
変換処理は、変換後の任意の 2 つのワイド文字列を、 wcscmp() または wscmp() がプログラムのロケール ( LC_COLLATE カテゴリ ) 中の照合手順情報に従って 正しく順序付けできるように行われます。
n が 0 であれば ws1 は NULL ポインタでもよい、という規則を利用して、 変換前に ws1 の配列の大きさを調べることができます。
wcsxfrm() と wsxfrm() 関数は、 setlocale(3C) がロケール変更で呼び出されない限り、 マルチスレッドのアプリケーションでは安全に使用できます。
次の属性については attributes(5) のマニュアルページを参照してください。
属性タイプ | 属性値 |
MT レベル | 例外付き MT-safe |
CSI | 対応済み |