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