概要
ワイド文字列を、マルチバイト文字列へ変換する。
効果
*srcが指す文字列を変換し、dstが指す配列へ最大lenバイトを書き込む。変換が途中で止まった場合、*srcは次に変換すべき位置を指すように更新される。すべて変換できた場合、*srcにはヌルポインタが設定される。
戻り値
書き込んだバイト数(終端のヌル文字を含まない)を返す。変換できないワイド文字があった場合は(size_t)-1を返し、errnoにEILSEQを設定する。
備考
dstがヌルポインタの場合、書き込みは行われず、変換に必要なバイト数だけが返る
例
#include <cwchar>
#include <clocale>
#include <iostream>
int main()
{
std::setlocale(LC_ALL, "C.UTF-8");
std::mbstate_t state{};
const wchar_t* src = L"abc";
char buffer[8] = {};
std::size_t n = std::wcsrtombs(buffer, &src, 8, &state);
std::wcout << n << std::endl;
}
出力例
3
バージョン
言語
- C++98
関連項目
mbsrtowcs: 逆方向の変換wcrtomb: 1文字ずつ変換するstd::wcstombs(): 変換状態を引数で受け取らない、内部状態に依存するバージョン