最終更新日時:
が更新

履歴 編集

function
<locale>

std::num_get::コンストラクタ

explicit num_get(size_t refs = 0);

概要

num_getファセットオブジェクトを構築する。

効果

基底クラスをlocale::facet(refs)で初期化する。

備考

refsは、このファセットの参照カウントの初期値である。

  • refs == 0の場合、このファセットを保持するlocaleオブジェクトが破棄されるとき、ファセットも破棄される
  • refs == 1の場合、localeオブジェクトの破棄によってファセットが破棄されることはない。ファセットの寿命を利用者が管理する場合に使用する

#include <iostream>
#include <locale>
#include <sstream>
#include <iterator>

// num_getを継承して、独自のファセットを定義する
struct my_num_get : std::num_get<char> {
  // 基底クラスのコンストラクタに参照カウントを渡す
  explicit my_num_get(std::size_t refs = 0)
    : std::num_get<char>(refs) {}
};

int main()
{
  std::istringstream iss{"42"};

  // 独自ファセットを設定したロケールを構築する
  std::locale loc{iss.getloc(), new my_num_get{}};
  iss.imbue(loc);

  long value = 0;
  iss >> value;

  std::cout << value << std::endl;
}

出力

42

バージョン

言語

  • C++98

関連項目