概要
ワイド文字を、変換状態を保持しながらマルチバイト文字へ変換する。
効果
wcをマルチバイト文字へ変換し、sが指す配列へ書き込む。書き込まれるバイト数は最大でMB_CUR_MAXである。
戻り値
書き込んだバイト数を返す。wcが有効なワイド文字ではない場合、(size_t)-1を返し、errnoにEILSEQを設定する。
備考
sがヌルポインタの場合、内部のバッファに対してヌルワイド文字を変換したものとして扱われる- 書き込み先の配列は、
MB_CUR_MAXバイト以上の大きさをもたなければならない
例
#include <cwchar>
#include <clocale>
#include <cstdlib>
#include <iostream>
int main()
{
std::setlocale(LC_ALL, "C.UTF-8");
std::mbstate_t state{};
char buffer[MB_CUR_MAX];
// UTF-8では3バイトへ変換される
std::size_t n = std::wcrtomb(buffer, L'あ', &state);
std::wcout << n << std::endl;
}
出力例
3
バージョン
言語
- C++98
関連項目
mbrtowc: 逆方向の変換wcsrtombs: 文字列全体を変換するMB_CUR_MAXstd::wctomb(): 変換状態を引数で受け取らない、内部状態に依存するバージョン