最終更新日時:
が更新

履歴 編集

class template
<locale>

std::codecvt_byname

namespace std {
  template <class internT, class externT, class stateT>
  class codecvt_byname : public codecvt<internT, externT, stateT>;
}

概要

codecvt_bynameは、名前で指定したロケールの文字コード変換を提供する、codecvtの派生クラスである。

codecvtの仮想関数を、locale(const char*)で同じ名前を指定して構築したロケールのファセットと等価な意味論で実装する。

このクラスはcodecvtが提供するインタフェースをそのまま継承しており、独自のメンバ関数は持たない。

メンバ関数

publicメンバ関数

名前 説明
(constructor) コンストラクタ

protectedメンバ関数

名前 説明
(destructor) デストラクタ

#include <iostream>
#include <locale>
#include <cwchar>

int main()
{
  using codecvt_t = std::codecvt<wchar_t, char, std::mbstate_t>;

  // ファセットのデストラクタはprotectedであるため、
  // newで確保してlocaleに所有権を渡す
  std::locale loc{std::locale::classic(),
                  new std::codecvt_byname<wchar_t, char, std::mbstate_t>{"C"}};

  std::cout << std::boolalpha << std::has_facet<codecvt_t>(loc) << std::endl;
}

出力

true

バージョン

言語

  • C++98

関連項目