std:: money_get
|
Défini dans l'en-tête
<locale>
|
||
|
template
<
class
CharT,
|
||
Modèle de classe
std::money_get
encapsule les règles d'analyse des valeurs monétaires à partir des flux de caractères. Le manipulateur d'E/S standard
std::get_money
utilise le facette
std::money_get
de la locale du flux d'E/S.
Diagramme d'héritage
Si une spécialisation de
std::money_get
n'est pas garantie d'être fournie par la bibliothèque standard (voir ci-dessous), les comportements de ses fonctions
get()
et
do_get()
ne sont pas garantis comme spécifié.
Table des matières |
Spécialisations
La bibliothèque standard garantit la fourniture des spécialisations suivantes (elles sont requises pour être implémentées par tout objet locale ):
|
Défini dans l'en-tête
<locale>
|
|
| std :: money_get < char > | analyse les représentations sous forme de chaînes étroites des valeurs monétaires |
| std :: money_get < wchar_t > | analyse les représentations sous forme de chaînes larges des valeurs monétaires |
En outre, la bibliothèque standard garantit également de fournir chaque spécialisation qui satisfait aux exigences de type suivantes :
-
CharTest l'un des- char ,
- wchar_t , et
- tout autre type de conteneur de caractères défini par l'implémentation qui satisfait aux exigences pour un caractère sur lequel l'un des composants iostream peut être instancié ; et
-
InputItdoit satisfaire aux exigences de LegacyInputIterator .
Types imbriqués
| Type | Définition |
char_type
|
CharT
|
string_type
|
std:: basic_string < CharT > |
iter_type
|
InputIt
|
Membres de données
| Membre | Description |
std::locale::id
id
[static]
|
l'identifiant de la facette |
Fonctions membres
construit un nouveau facet
money_get
(fonction membre publique) |
|
invoque
do_get
(fonction membre publique) |
Fonctions membres protégées
détruit un facet
money_get
(fonction membre protégée) |
|
|
[virtual]
|
analyse une valeur monétaire depuis un flux d'entrée
(fonction membre virtuelle protégée) |
Exemple
#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 << "\" analysé avec le manipulateur d'E/S : "; 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 << "\" analysé directement avec le facet : "; 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'; }
Sortie :
"$1.11 $2.22 $3.33" analysé avec le manipulateur d'E/S : 1.11 2.22 3.33 "USD 1,234.56" analysé directement avec le facet : 1234.56
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 427 | C++98 |
money_get
était garanti d'accepter tout
CharT
qui
répond aux exigences pour un caractère sur lequel n'importe quel composant iostream peut être instancié |
ne garantit que d'accepter
char
,
wchar_t et autres types de caractères définis par l'implémentation |
| LWG 2392 | C++98 |
seul le type de caractère
CharT
pouvait être
garanti d'être accepté par
money_get
|
peut garantir d'accepter les types de conteneurs
de caractères définis par l'implémentation |
Voir aussi
|
définit les paramètres de formatage monétaire utilisés par
std::money_get
et
std::money_put
(modèle de classe) |
|
|
formate une valeur monétaire pour la sortie sous forme de séquence de caractères
(modèle de classe) |
|
|
(C++11)
|
analyse une valeur monétaire
(modèle de fonction) |