std:: money_put
|
Definido en el encabezado
<locale>
|
||
|
template
<
class
CharT,
|
||
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.
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:
-
CharTes uno de- char ,
- wchar_t , y
- cualquier otro tipo de contenedor de caracteres definido por la implementación que cumpla con los requisitos para un carácter sobre el cual cualquiera de los componentes de iostream pueda instanciarse; y
-
OutputItdebe cumplir con los requisitos de LegacyOutputIterator .
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) |