Namespaces
Variants

std:: money_put

From cppreference.net
Definido en el encabezado <locale>
template <

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

> class money_put ;

La clase std::money_put encapsula las reglas para formatear valores monetarios como cadenas. El manipulador de E/S estándar std::put_money utiliza el facet std::money_put de la configuración regional del flujo de E/S.

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

Diagrama de herencia

Si una especialización de std::money_put no está garantizada por la biblioteca estándar (ver abajo), los comportamientos de sus funciones put() y do_put() no están garantizados como se especifica.

Contenidos

Especializaciones

La biblioteca estándar garantiza proporcionar las siguientes especializaciones (están requeridas para ser implementadas por cualquier objeto locale ):

Definido en el encabezado <locale>
std :: money_put < char > crea representaciones de cadena estrecha de valores monetarios
std :: money_put < wchar_t > crea representaciones de cadena ancha de valores monetarios

Además, la biblioteca estándar también garantiza proporcionar cada especialización que cumpla con los siguientes requisitos de tipo:

Tipos anidados

Tipo Definición
char_type CharT
string_type std:: basic_string < CharT >
iter_type OutputIt

Miembros de datos

Miembro Descripción
std::locale::id id [static] el identificador del facet

Funciones miembro

construye una nueva faceta money_put
(función miembro pública)
invoca do_put
(función miembro pública)

Funciones miembro protegidas

destruye una faceta money_put
(función miembro protegida)
[virtual]
formatea un valor monetario y escribe en el flujo de salida
(función miembro virtual protegida)

Ejemplo

#include <iomanip>
#include <iostream>
#include <iterator>
#include <locale>
int main()
{
    // usando el manipulador de E/S
    std::cout.imbue(std::locale("en_US.UTF-8"));
    std::cout << "Configuración regional americana: "
              << std::showbase << std::put_money(12345678.9) << '\n';
    // usando la faceta directamente
    std::cout.imbue(std::locale("de_DE.UTF-8"));
    std::cout << "Configuración regional alemana: ";
    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';
}

Salida:

Configuración regional americana: $123,456.79
Configuración regional alemana: 123.456,79 €

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 427 C++98 money_put garantizaba aceptar cualquier CharT que
cumpliese los requisitos para un carácter sobre el cual
cualquier componente de iostream pudiese instanciarse
solo garantiza aceptar char ,
wchar_t y otros tipos de carácter
definidos por la implementación
LWG 2392 C++98 solo el tipo carácter CharT podía
garantizarse ser aceptado por money_put
puede garantizar aceptar tipos contenedores
de caracteres definidos por la implementación

Véase también

define los parámetros de formato monetario utilizados por std::money_get y std::money_put
(plantilla de clase)
analiza y construye un valor monetario a partir de una secuencia de caracteres de entrada
(plantilla de clase)
(C++11)
formatea y emite un valor monetario
(plantilla de función)