std:: money_get
|
ヘッダーで定義
<locale>
|
||
|
template
<
class
CharT,
|
||
クラステンプレート
std::money_get
は、文字ストリームから通貨値を解析するための規則をカプセル化します。標準I/Oマニピュレータ
std::get_money
は、I/Oストリームのロケールの
std::money_get
ファセットを使用します。
継承図
std::money_get
の特殊化が標準ライブラリによって提供されることが保証されていない場合(下記参照)、その
get()
および
do_get()
の動作は指定通りに保証されません。
目次 |
特殊化
標準ライブラリは以下の特殊化を提供することが保証されています(これらは あらゆるロケールオブジェクトで実装が必須 とされています):
|
ヘッダーで定義
<locale>
|
|
| std :: money_get < char > | ナロウ文字列の通貨値表現を解析する |
| std :: money_get < wchar_t > | ワイド文字列の通貨値表現を解析する |
さらに、標準ライブラリは以下の型要件を満たすすべての特殊化を提供することも保証されています:
-
CharTは以下のいずれかです:- char 、
- wchar_t 、および
- 文字コンテナ型 の要件を満たす、その他の実装定義の文字型で、 iostreamコンポーネント のインスタンス化が可能なもの。
-
InputItは LegacyInputIterator の要件を満たさなければなりません。
ネスト型
| 型 | 定義 |
char_type
|
CharT
|
string_type
|
std:: basic_string < CharT > |
iter_type
|
InputIt
|
データメンバ
| メンバー | 説明 |
std::locale::id
id
[static]
|
facet の識別子 |
メンバー関数
新しい
money_get
ファセットを構築する
(public member function) |
|
do_get
を呼び出す
(public member function) |
プロテクテッドメンバー関数
money_get
ファセットを破棄する
(protected member function) |
|
|
[virtual]
|
入力ストリームから通貨値を解析する
(virtual protected member function) |
例
#include <iomanip> #include <iostream> #include <iterator> #include <locale> #include <sstream> int main() { std::string str = "$1.11 $2.22 $3.33"; std::cout << std::fixed << std::setprecision(2); std::cout << '\"' << str << "\" parsed with the I/O manipulator: "; std::istringstream s1(str); s1.imbue(std::locale("en_US.UTF-8")); long double val; while (s1 >> std::get_money(val)) std::cout << val / 100 << ' '; std::cout << '\n'; str = "USD 1,234.56"; std::cout << '\"' << str << "\" parsed with the facet directly: "; std::istringstream s2(str); s2.imbue(std::locale("en_US.UTF-8")); auto& f = std::use_facet<std::money_get<char>>(s2.getloc()); std::ios_base::iostate err; std::istreambuf_iterator<char> beg(s2), end; f.get(beg, end, true, s2, err, val); std::cout << val / 100 << '\n'; }
出力:
"$1.11 $2.22 $3.33" parsed with the I/O manipulator: 1.11 2.22 3.33 "USD 1,234.56" parsed with the facet directly: 1234.56
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の仕様 | 正しい仕様 |
|---|---|---|---|
| LWG 427 | C++98 |
money_get
はあらゆる
CharT
を受け入れることが保証されていた
(iostreamコンポーネントのインスタンス化が可能な 文字要件を満たすもの) |
char
、
wchar_t およびその他の実装定義 文字型のみを受け入れることが保証される |
| LWG 2392 | C++98 |
文字型
CharT
のみが
money_get
による受け入れが保証されていた
|
実装定義の文字コンテナ型の
受け入れを保証可能 |
関連項目
|
std::money_get
および
std::money_put
で使用される通貨書式パラメータを定義する
(クラステンプレート) |
|
|
通貨値を文字シーケンスとして出力するために整形する
(クラステンプレート) |
|
|
(C++11)
|
通貨値を解析する
(関数テンプレート) |