最終更新日時:
が更新

履歴 編集

function
<cwchar>

std::mbsrtowcs

namespace std {
  size_t mbsrtowcs(wchar_t* dst, const char** src, size_t len, mbstate_t* ps);
}

概要

マルチバイト文字列を、ワイド文字列へ変換する。

効果

*srcが指す文字列を変換し、dstが指す配列へ最大len文字を書き込む。変換が途中で止まった場合、*srcは次に変換すべき位置を指すように更新される。すべて変換できた場合、*srcにはヌルポインタが設定される。

戻り値

書き込んだ文字数(終端のヌル文字を含まない)を返す。不正なバイト列があった場合は(size_t)-1を返し、errnoEILSEQを設定する。

備考

  • 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(): 変換状態を引数で受け取らない、内部状態に依存するバージョン