名前 | 形式 | 機能説明 | 戻り値 | エラー | 使用法 | 属性 | 関連項目
#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() 関数は、正常終了した場合、errno の設定を変更しません。
エラーを示す戻り値は予約されていないため、エラー状態をチェックしたいアプリケーションは、wcsxfrm() または wsxfrm() を呼び出す前に、errno を 0 に設定しておく必要があります。すると、後で errno をチェックできます。
wcsxfrm() および wsxfrm() 関数は、変換後のワイド文字列の長さを返します。これには終端の NULL ワイド文字コードは含まれません。戻り値が n 以上の値の場合、ws1 が示す配列の内容は予測できません。
エラー時、wcsxfrm() と wsxfrm() は errno を設定できますが、エラーを示す戻り値は予約されていません。
変換処理は、変換後の任意の 2 つのワイド文字列を、wcscmp() または wscmp() がプログラムのロケール ( LC_COLLATE カテゴリ ) 中の照合手順情報に従って 正しく順序付けできるように行われます。
n が 0 であれば ws1 は NULL ポインタでもよい、という規則を利用して、変換前に ws1 の配列の大きさを調べることができます。
wcsxfrm() と wsxfrm() 関数は、setlocale(3C) がロケール変更で呼び出されない限り、マルチスレッドのアプリケーションでは安全に使用できます。
次の属性については attributes(5) のマニュアルページを参照してください。
| 属性タイプ | 属性値 |
| MT レベル | 例外付き MT-safe |
| CSI | 対応済み |
| インタフェースの安定性 | wcsxfrm() は標準 |