最終更新日時:
が更新

履歴 編集

function
<cwchar>

std::wcrtomb

namespace std {
  size_t wcrtomb(char* s, wchar_t wc, mbstate_t* ps);
}

概要

ワイド文字を、変換状態を保持しながらマルチバイト文字へ変換する。

効果

wcをマルチバイト文字へ変換し、sが指す配列へ書き込む。書き込まれるバイト数は最大でMB_CUR_MAXである。

戻り値

書き込んだバイト数を返す。wcが有効なワイド文字ではない場合、(size_t)-1を返し、errnoEILSEQを設定する。

備考

  • 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

関連項目