Namespaces
Variants

std:: money_put

From cppreference.net
Défini dans l'en-tête <locale>
template <

class CharT,
class OutputIt = std:: ostreambuf_iterator < CharT >

> class money_put ;

La classe std::money_put encapsule les règles de formatage des valeurs monétaires en chaînes de caractères. Le manipulateur d'E/S standard std::put_money utilise le facette std::money_put de la locale du flux d'E/S.

cpp/locale/locale/facet std-money put-inheritance.svg

Diagramme d'héritage

Si une spécialisation de std::money_put n'est pas garantie d'être fournie par la bibliothèque standard (voir ci-dessous), les comportements de ses fonctions put() et do_put() 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_put < char > crée des représentations de chaînes étroites des valeurs monétaires
std :: money_put < wchar_t > crée des représentations 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 :

Types imbriqués

Type Définition
char_type CharT
string_type std:: basic_string < CharT >
iter_type OutputIt

Membres de données

Membre Description
std::locale::id id [static] l'identifiant de la facette

Fonctions membres

construit un nouveau facet money_put
(fonction membre publique)
invoque do_put
(fonction membre publique)

Fonctions membres protégées

détruit un facet money_put
(fonction membre protégée)
[virtual]
formate une valeur monétaire et écrit dans le flux de sortie
(fonction membre virtuelle protégée)

Exemple

#include <iomanip>
#include <iostream>
#include <iterator>
#include <locale>
int main()
{
    // utilisation du manipulateur d'E/S
    std::cout.imbue(std::locale("en_US.UTF-8"));
    std::cout << "Locale américaine : "
              << std::showbase << std::put_money(12345678.9) << '\n';
    // utilisation directe du facet
    std::cout.imbue(std::locale("de_DE.UTF-8"));
    std::cout << "Locale allemande : ";
    auto& f = std::use_facet<std::money_put<char>>(std::cout.getloc());
    f.put({std::cout}, false, std::cout, std::cout.fill(), 12345678.9);
    std::cout << '\n';
}

Sortie :

American locale: $123,456.79
German locale: 123.456,79 €

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 Applicable à Comportement publié Comportement corrigé
LWG 427 C++98 money_put était garanti d'accepter tout CharT qui
répond aux exigences pour un caractère sur lequel
n'importe quel composant des iostreams peut être instancié
garantit uniquement 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_put
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)
analyse et construit une valeur monétaire à partir d'une séquence de caractères d'entrée
(modèle de classe)
(C++11)
formate et sort une valeur monétaire
(modèle de fonction)