std::num_put
提供: cppreference.com
ヘッダ <locale> で定義
|
||
template< class CharT, |
||
クラス std::num_put
は数値を文字列として書式化するためのルールをカプセル化します。 具体的には、型 bool, long, unsigned long, long long, unsigned long long, double, long double, void* およびこれらに暗黙に変換可能なすべての型 (int や float など) がサポートされます。 標準の書式付き出力操作 (cout << n; など) は数値のテキスト表現を生成するために入出力ストリームのロケールの std::num_put
ファセットを使用します。
目次 |
[編集] 型の要件
-OutputIt は LegacyOutputIterator の要件を満たさなければなりません。
|
[編集] 特殊化
2つのスタンドアロンな (ロケール非依存の) 完全特殊化および2つの部分特殊化が標準ライブラリによって提供されます。
ヘッダ
<locale> で定義 | |
std::num_put<char> | 数値のナロー文字列表現を作成します |
std::num_put<wchar_t> | 数値のワイド文字列表現を作成します |
std::num_put<char, OutputIt> | カスタム出力イテレータを用いて数値のナロー文字列表現を作成します |
std::num_put<wchar_t, OutputIt> | カスタム出力イテレータを用いて数値のワイド文字列表現を作成します |
さらに、 C++ のプログラム内で構築したすべてのロケールオブジェクトは、これらの特殊化の独自の (ロケール固有の) バージョンを実装します。
[編集] メンバ型
メンバ型 | 定義 |
char_type
|
CharT
|
iter_type
|
OutputIt
|
[編集] メンバ関数
新しい num_put ファセットを構築します (パブリックメンバ関数) | |
num_put ファセットを破棄します (プロテクテッドメンバ関数) | |
do_put を呼びます (パブリックメンバ関数) |
[編集] プロテクテッドメンバ関数
[仮想] |
数値を書式化して出力ストリームに書き込みます (仮想プロテクテッドメンバ関数) |
[編集] メンバオブジェクト
static std::locale::id id |
ロケールの id (パブリックメンバオブジェクト) |
[編集] 例
Run this code
#include <iostream> #include <locale> #include <string> #include <iterator> int main() { double n = 1234567.89; std::cout.imbue(std::locale("de_DE")); std::cout << "Direct conversion to string:\n" << std::to_string(n) << '\n' << "Output using a german locale:\n" << std::fixed << n << '\n' << "Output using an american locale:\n"; // use the facet directly std::cout.imbue(std::locale("en_US.UTF-8")); auto& f = std::use_facet<std::num_put<char>>(std::cout.getloc()); f.put(std::ostreambuf_iterator<char>(std::cout), std::cout, ' ', n); std::cout << '\n'; }
出力:
Direct conversion to string: 1234567.890000 Output using a german locale: 1.234.567,890000 Output using an american locale: 1,234,567.890000
[編集] 関連項目
数値の区切り文字の規則を定義します (クラステンプレート) | |
入力文字シーケンスから数値をパースします (クラステンプレート) | |
(C++11) |
整数または浮動小数点値を string に変換します (関数) |
(C++11) |
整数または浮動小数点値を wstring に変換します (関数) |