Compartir vía


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_typeval. 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++