money_put (Clase)
La plantilla de clase describe un objeto que puede actuar como una faceta de la configuración regional para controlar las conversiones de valores monetarios en secuencias de tipo CharType
.
Sintaxis
template <class CharType,
class OutputIterator = ostreambuf_iterator<CharType>>
class money_put : public locale::facet;
Parámetros
CharType
Tipo usado dentro de un programa para codificar los caracteres de una configuración regional.
OutputIterator
Tipo de iterador en el que las funciones monetary put escriben sus resultados.
Comentarios
Como ocurre con cualquier faceta de configuración regional, el identificador de objeto estático tiene un valor almacenado inicial de cero. El primer intento de acceso a su valor almacenado almacena un valor positivo único en id.
Constructores
Constructor | Descripción |
---|---|
money_put | Constructor para los objetos de tipo money_put . |
Typedefs
Nombre de tipo | Descripción |
---|---|
char_type | Tipo que se usa para describir un carácter empleado por una configuración regional. |
iter_type | Tipo que describe un iterador de salida. |
string_type | Tipo que describe una cadena que contiene caracteres de tipo CharType . |
Funciones miembro
Función de miembro | Descripción |
---|---|
do_put | Una función virtual a la que se llama para convertir un número o una cadena en una secuencia de caracteres que representa un valor monetario. |
put | Convierte un número o una cadena en una secuencia de caracteres que representa un valor monetario. |
Requisitos
Encabezado:<locale>
Espacio de nombres: std
money_put::char_type
Tipo que se usa para describir un carácter empleado por una configuración regional.
typedef CharType char_type;
Comentarios
El tipo es un sinónimo del parámetro de plantilla CharType.
money_put::d o_put
Una función virtual a la que se llama para convertir un número o una cadena en una secuencia de caracteres que representa un valor monetario.
virtual iter_type do_put(
iter_type next,
bool _Intl,
ios_base& _Iosbase,
CharType _Fill,
const string_type& val) const;
virtual iter_type do_put(
iter_type next,
bool _Intl,
ios_base& _Iosbase,
CharType _Fill,
long double val) const;
Parámetros
siguiente
Un iterador que se dirige al primer elemento de la cadena insertada.
_Intl
Un valor booleano que indica el tipo de símbolo de moneda que se espera en la secuencia: true
si es internacional, false
si es nacional.
_Iosbase
Un formato de marca que cuando está establecido indica que el símbolo de moneda es opcional. De lo contrario, es obligatorio.
_Fill
Un carácter que se usa para el espaciado.
val
Un objeto de cadena que se va a convertir.
Valor devuelto
Un iterador de salida que se dirige a la posición siguiente del último elemento que se ha producido.
Comentarios
La primera función miembro virtual protegida genera elementos secuenciales que comienzan por next para producir un campo de salida monetario del objeto string_type val. La secuencia controlada por val debe comenzar por uno o más dígitos decimales, precedidos de manera opcional por un signo menos (-), que representa la cantidad. La función devuelve un iterador que designa el primer elemento más allá del campo de salida monetario que se ha generado.
La segunda función miembro virtual protegida se comporta de la misma manera que la primera, a excepción de que primero convierte val de facto en una secuencia de dígitos decimales, precedida de manera opcional por un signo menos y, después, convierte esa secuencia como se ha descrito anteriormente.
El formato de un campo de salida monetario viene determinado por la faceta de configuración regional fac devuelta mediante la llamada (de facto) a use_facet<moneypunct<CharType, intl>>( iosbase. getloc).
Específicamente:
fac. pos_format determina el orden en el que se generan los componentes del campo para un valor no negativo.
fac. neg_format determina el orden en el que se generan los componentes del campo para un valor negativo.
fac. curr_symbol determina la secuencia de elementos que se va a generar para un símbolo de moneda.
fac. positive_sign determina la secuencia de elementos que se va a generar para un signo positivo.
fac. negative_sign determina la secuencia de elementos que se va a generar para un signo negativo.
fac. grouping determina cómo se agrupan los dígitos a la izquierda de cualquier separador decimal.
fac. thousands_sep determina el elemento que separa grupos de dígitos a la izquierda de cualquier separador decimal.
fac. decimal_point determina el elemento que separa los dígitos enteros de cualquier dígito de fracción.
fac. frac_digits determina el número de dígitos de fracción significativos a la derecha de cualquier separador decimal.
Si la cadena de signo (fac. negative_sign
o fac. positive_sign
) tiene más de un elemento, solo se genera el primer elemento, donde el elemento igual a money_base::sign aparece en el patrón de formato (fac. neg_format
o fac. pos_format
). Cualquier elemento restante se genera al final del campo de salida monetario.
Si iosbase. flags & showbase es distinto de cero, la cadena fac. curr_symbol
se genera donde el elemento igual a money_base::symbol aparece en el patrón de formato. De otro modo, no se genera ningún símbolo de moneda.
Si no se impone ninguna restricción de agrupación mediante fac. grouping (su primer elemento tiene el valor CHAR_MAX), entonces ninguna instancia de fac. thousands_sep
se genera en la parte de valor del campo de salida monetario (donde el elemento igual a money_base::value aparece en el patrón de formato). Si fac. frac_digits
es cero, entonces ninguna instancia de fac. decimal_point
se genera después de los dígitos decimales. De otro modo, el campo de salida monetario resultante coloca los dígitos decimales fac. frac_digits
de nivel bajo a la derecha del separador decimal.
El relleno se produce en cualquier campo de salida numérico, excepto si iosbase. flags & iosbase. internal es distinto de cero, cualquier relleno interno se genera donde el elemento igual a money_base::space aparece en el patrón de formato, si aparece. De otro modo, el relleno interno se produce antes de la secuencia generada. El carácter de relleno es fill.
La función llama a iosbase. width(0) para restablecer el ancho de campo a cero.
Ejemplo
Vea el ejemplo de put, donde put llama a la función miembro virtual.
money_put::iter_type
Tipo que describe un iterador de salida.
typedef OutputIterator iter_type;
Comentarios
El tipo es un sinónimo del parámetro de plantilla OutputIterator.
money_put::money_put
Constructor para los objetos de tipo money_put
.
explicit money_put(size_t _Refs = 0);
Parámetros
_Refs
Valor entero que se usa para especificar el tipo de administración de memoria del objeto.
Comentarios
Los valores posibles del parámetro _Refs y su importancia son:
0: la vigencia del objeto se administra mediante las configuraciones regionales que lo contienen.
1: la vigencia del objeto se debe administrar de manera manual.
> 1: estos valores no están definidos.
No es posible mostrar ejemplos directos, porque el destructor está protegido.
El constructor inicializa su objeto base con locale::facet( _Refs
).
money_put::p ut
Convierte un número o una cadena en una secuencia de caracteres que representa un valor monetario.
iter_type put(
iter_type next,
bool _Intl,
ios_base& _Iosbase,
CharType _Fill,
const string_type& val) const;
iter_type put(
iter_type next,
bool _Intl,
ios_base& _Iosbase,
CharType _Fill,
long double val) const;
Parámetros
siguiente
Un iterador que se dirige al primer elemento de la cadena insertada.
_Intl
Un valor booleano que indica el tipo de símbolo de moneda que se espera en la secuencia: true
si es internacional, false
si es nacional.
_Iosbase
Un formato de marca que cuando está establecido indica que el símbolo de moneda es opcional. De lo contrario, es obligatorio.
_Fill
Un carácter que se usa para el espaciado.
val
Un objeto de cadena que se va a convertir.
Valor devuelto
Un iterador de salida que se dirige a la posición siguiente del último elemento que se ha producido.
Comentarios
Ambas funciones miembro devuelven do_put( next
, _Intl
, _Iosbase
, _Fill
, val
).
Ejemplo
// money_put_put.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>
int main()
{
std::locale loc( "german_germany" );
std::basic_stringstream<char> psz;
psz.imbue(loc);
psz.flags(psz.flags() | std::ios_base::showbase); // force the printing of the currency symbol
std::use_facet<std::money_put<char> >(loc).put(std::basic_ostream<char>::_Iter(psz.rdbuf()), true, psz, ' ', 100012);
if (psz.fail())
std::cout << "money_put() FAILED" << std::endl;
else
std::cout << "money_put() = \"" << psz.rdbuf()->str() << "\"" << std::endl;
}
money_put() = "EUR1.000,12"
money_put::string_type
Tipo que describe una cadena que contiene caracteres de tipo CharType
.
typedef basic_string<CharType, Traits, Allocator> string_type;
Comentarios
El tipo describe una especialización de plantilla de clase basic_string cuyos objetos pueden almacenar secuencias de elementos de la secuencia de origen.
Consulte también
<locale>
facet (Clase)
Seguridad para subprocesos en la biblioteca estándar de C++