概要
マルチバイト文字列を、ワイド文字列へ変換する。
効果
*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 char* src = "abc";
wchar_t buffer[8] = {};
std::size_t n = std::mbsrtowcs(buffer, &src, 8, &state);
std::wcout << n << std::endl;
std::wcout << buffer << std::endl;
}
出力例
3
abc
バージョン
言語
- C++98
関連項目
wcsrtombs: 逆方向の変換mbrtowc: 1文字ずつ変換するstd::mbstowcs(): 変換状態を引数で受け取らない、内部状態に依存するバージョン