money_get (Clase)

 

Publicado: octubre de 2016

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

La clase de plantilla describe un objeto que puede actuar como una faceta de la configuración regional para controlar las conversiones de secuencias de tipo CharType en valores monetarios.

template <class CharType, class InputIterator = istreambuf_iterator<CharType>>  
class money_get : public locale::facet;

Parámetros

CharType
Tipo usado dentro de un programa para codificar los caracteres de una configuración regional.

InputIterator
Tipo de iterador del que las funciones get leen su entrada.

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 para tener acceso a su valor almacenado almacena un valor positivo único en id.

Constructores

money_getConstructor de objetos de tipo money_get que se usan para extraer valores numéricos de secuencias que representan valores monetarios.

Typedefs

char_typeTipo que se usa para describir un carácter empleado por una configuración regional.
iter_typeTipo que describe un iterador de entrada.
STRING_TYPETipo que describe una cadena que contiene caracteres de tipo CharType.

Funciones miembro

do_getFunción virtual a la que se llama para extraer un valor numérico de una secuencia de caracteres que representa un valor monetario.
ObtenerExtrae un valor numérico de una secuencia de caracteres que representa un valor monetario.

Encabezado: < configuración regional>

Espacio de nombres: std

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.

Función virtual que se llama para extrae un valor numérico de una secuencia de caracteres que representa un valor monetario.

virtual iter_type do_get(iter_type first,
    iter_type last,
    bool _Intl,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    long double& val) const virtual iter_type do_get(iter_type first,
    iter_type last,
    bool _Intl,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    string_type& val) const

Parámetros

first
Iterador de entrada que direcciona el principio de la secuencia que se va a convertir.

last
Iterador de entrada que direcciona al final de la secuencia que se va a convertir.

_Intl
Un valor booleano que indica el tipo de símbolo de moneda esperado en la secuencia: true Si internacionales, false Si nacionales.

_Iosbase
Un formato de marca que cuando está establecido indica que el símbolo de moneda es opcional; de lo contrario, es necesario.

_State
Establece los elementos de la máscara de bits apropiada para el estado de la secuencia según si las operaciones se realizó correctamente o no.

val
Una cadena de almacenar la secuencia convertida.

Valor devuelto

Un iterador de entrada que direcciona el primer elemento más allá de un campo monetario de entrada.

Comentarios

La primera función miembro protegido virtual intenta hacer coincidir elementos secuenciales, empezando al principio de la secuencia [ first, last) hasta que se reconoce una completa, el campo de entrada de moneda vacía. Si tiene éxito, convierte este campo en una secuencia de uno o más dígitos decimales, opcionalmente precedido de un signo menos ( ), para representar la cantidad y almacena el resultado en la string_type objeto val. Devuelve un iterador que designa el primer elemento más allá de un campo monetario de entrada. De lo contrario, la función almacena una secuencia vacía en val y establece ios_base::failbit en _State. Devuelve un iterador que designa el primer elemento más allá de cualquier prefijo de un campo monetario de entrada válido. En cualquier caso, si el valor devuelto es igual a last, la función establece ios_base::eofbit en _State.

La segunda función miembro protegido virtual comporta igual que la primera, excepto en que si se realiza correctamente convierte la secuencia de dígitos, opcionalmente, con signo en un valor de tipo long double y almacena ese valor en val.

El formato de un campo monetario de entrada viene determinado por la faceta de configuración regionalservicio devuelto por la llamada efectiva use_facet < moneypunct< CharType, intl>> ( iosbase. getloc).

De manera específica:

  • servicio. neg_format determina el orden en que aparecen los componentes del campo.

  • servicio. curr_symbol determina la secuencia de elementos que constituye un símbolo de moneda.

  • servicio. positive_sign determina la secuencia de elementos que constituye un signo positivo.

  • servicio. negative_sign determina la secuencia de elementos que constituye un signo negativo.

  • servicio. agrupar determina cómo se agrupan los dígitos a la izquierda del separador decimal.

  • servicio. thousands_sep determina el elemento que separa grupos de dígitos a la izquierda del separador decimal.

  • servicio. decimal_point determina el elemento que separa los dígitos enteros de los dígitos de fracción.

  • servicio. frac_digits determina el número de dígitos de fracción considerable a la derecha del separador decimal. Al analizar un importe monetario con más de los dígitos de fracción que se llama para frac_digits, do_get detiene el análisis después de consumir a lo sumo frac_digits caracteres.

Si la cadena de inicio de sesión ( servicio. negative_sign o servicio. positive_sign) tiene más de un elemento, sólo el primer elemento que coincide el elemento igual a money_base::sign aparece en el modelo de formato ( servicio. neg_format). Los elementos restantes se asocian al final del campo monetario de entrada. Si ninguna cadena tiene un primer elemento que coincide con el elemento siguiente en el campo monetario de entrada, la cadena de inicio de sesión se realiza como vacía y el inicio de sesión es positivo.

Si iosbase. marcas de & showbase es distinto de cero, la cadena servicio. curr_symbol debe coincidir con donde el elemento igual a money_base::symbol aparece en el modelo de formato. De lo contrario, si money_base::symbol se produce al final del patrón de formato, y si no queda ningún elemento de la cadena de inicio de sesión debe coincidir, no coincide con el símbolo de moneda. De lo contrario, opcionalmente se compara el símbolo de moneda.

Si no hay instancias de servicio. thousands_sep se producen en la parte del valor del campo monetario de entrada (donde el elemento igual a money_base::value aparece en el modelo de formato), no se impone ninguna restricción de agrupación. De lo contrario, cualquier agrupación de restricciones impuestas por servicio. agrupación de se aplica. Tenga en cuenta que la secuencia de dígitos resultante representa un entero cuyo orden inferior servicio. frac_digits se consideran dígitos decimales a la derecha del separador decimal.

Se hace coincidir el espacio en blanco arbitrario en el elemento igual a money_base::space aparece en el modelo de formato, si otro que aparece al final del patrón de formato. De lo contrario, no se asocia ningún espacio en blanco interno. Un elemento ch se consideran espacios en blanco si use_facet < ctype< CharType>> ( iosbase. getloc). es( ctype_base::space, ch) es true.

Ejemplo

Vea el ejemplo de obtener, que llama do_get.

Extrae un valor numérico de una secuencia de caracteres que representa un valor monetario.

iter_type get(iter_type first,
    iter_type last,
    bool _Intl,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    long double& val) const;

iter_type get(iter_type first,
    iter_type last,
    bool _Intl,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    string_type& val) const;

Parámetros

first
Iterador de entrada que direcciona el principio de la secuencia que se va a convertir.

last
Iterador de entrada que direcciona al final de la secuencia que se va a convertir.

_Intl
Un valor booleano que indica el tipo de símbolo de moneda esperado en la secuencia: true Si internacionales, false Si nacionales.

_Iosbase
Un formato de marca que cuando está establecido indica que el símbolo de moneda es opcional; de lo contrario, es necesario

_State
Establece los elementos de la máscara de bits apropiada para el estado de la secuencia según si las operaciones se realizó correctamente.

val
Una cadena de almacenar la secuencia convertida.

Valor devuelto

Un iterador de entrada que direcciona el primer elemento más allá de un campo monetario de entrada.

Comentarios

Ambas funciones miembro devuelven do_get( first``, last``, _Intl, _Iosbase, _State, val).

Ejemplo

// money_get_get.cpp  
// compile with: /EHsc  
#include <locale>  
#include <iostream>  
#include <sstream>  
using namespace std;  
  
int main( )  
{  
   locale loc( "german_germany" );  
  
   basic_stringstream< char > psz;  
   psz << use_facet<moneypunct<char, 1> >(loc).curr_symbol() << "-1.000,56";  
   basic_stringstream< char > psz2;  
   psz2 << "-100056" << use_facet<moneypunct<char, 1> >(loc).curr_symbol();  
  
   ios_base::iostate st = 0;  
   long double fVal;  
  
   psz.flags( psz.flags( )|ios_base::showbase );   
   // Which forced the READING the currency symbol  
   psz.imbue(loc);  
   use_facet < money_get < char > >( loc ).  
      get( basic_istream<char>::_Iter( psz.rdbuf( ) ),     
           basic_istream<char>::_Iter( 0 ), true, psz, st, fVal );  
  
   if ( st & ios_base::failbit )  
      cout << "money_get(" << psz.str( ) << ", intl = 1) FAILED"  
           << endl;  
   else  
      cout << "money_get(" << psz.str( ) << ", intl = 1) = "   
           << fVal/100.0 << endl;  
  
   use_facet < money_get < char > >( loc ).  
      get(basic_istream<char>::_Iter(psz2.rdbuf( )),     
          basic_istream<char>::_Iter(0), false, psz2, st, fVal);  
  
   if ( st & ios_base::failbit )  
      cout << "money_get(" << psz2.str( ) << ", intl = 0) FAILED"   
           << endl;  
   else  
      cout << "money_get(" << psz2.str( ) << ", intl = 0) = "   
           << fVal/100.0 << endl;  
};  

Tipo que describe un iterador de entrada.

typedef InputIterator iter_type;

Comentarios

El tipo es un sinónimo del parámetro de plantilla InputIterator.

Constructor de objetos de tipo money_get que se usan para extraer valores numéricos de secuencias que representan valores monetarios.

explicit money_get(size_t _Refs = 0);

Parámetros

_Refs
Valor entero que se utiliza para especificar el tipo de administración de memoria para el objeto.

Comentarios

Los valores posibles de la _Refs parámetro y su importancia son:

  • 0: la duración del objeto administra las configuraciones regionales que lo contienen.

  • 1: se debe administrar manualmente la duración del objeto.

  • > 0: no se definen estos valores.

No hay ejemplos directos son posibles, porque está protegido el destructor.

El constructor inicializa su objeto base con locale::faceta( _Refs).

Un 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 clase de plantilla basic_string.

< configuración regional>
Facet (clase)
Seguridad para subprocesos en la biblioteca estándar de C++

Mostrar: