Partilhar via


money_get Classe

O modelo de classe descreve um objeto que pode servir como uma faceta de localidade para controlar conversões de sequências do tipo CharType para valores monetários.

Sintaxe

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

Parâmetros

CharType
O tipo usado dentro de um programa para codificar caracteres em uma localidade.

InputIterator
O tipo de iterador a partir do qual as funções get leem suas entradas.

Observações

Como em qualquer faceta de localidade, o ID do objeto estático tem um valor inicial armazenado de zero. A primeira tentativa de acessar seu valor armazenado armazena um valor positivo exclusivo em id.

Construtores

Construtor Descrição
money_get O construtor para objetos do tipo money_get que são usados para extrair valores numéricos de sequências que representam valores monetários.

Typedefs (definições de tipos)

Nome do tipo Descrição
char_type Um tipo que é usado para descrever um caractere usado por uma localidade.
iter_type Um tipo que descreve um iterador de entrada.
string_type Um tipo que descreve uma cadeia de caracteres que contém caracteres do tipo CharType.

Funções de membro

Função de membro Descrição
do_get Uma função virtual chamada para extrair um valor numérico de uma sequência de caracteres que representa um valor monetário.
obter Extrai um valor numérico de uma sequência de caracteres que representa um valor monetário.

Requerimentos

Cabeçalho:<localidade>

Espaço de nomes: std

money_get::char_type

Um tipo que é usado para descrever um caractere usado por uma localidade.

typedef CharType char_type;

Observações

O tipo é um sinônimo para o parâmetro de modelo CharType.

money_get::d o_get

Função virtual chamada para extrair um valor numérico de uma sequência de caracteres que representa um valor monetário.

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

primeira
Iterador de entrada abordando o início da sequência a ser convertida.

último
Iterador de entrada endereçando o final da sequência a ser convertida.

Internacional
Um valor booleano que indica o tipo de símbolo de moeda esperado na sequência: true se internacional, false se nacional.

Iosbase
Um sinalizador de formato que, quando definido, indica que o símbolo da moeda é opcional; caso contrário, é obrigatório.

Estado
Define os elementos de máscara de bits apropriados para o estado do fluxo de acordo com se as operações foram bem-sucedidas ou não.

Val
Uma cadeia de caracteres que armazena a sequência convertida.

Valor de retorno

Um iterador de entrada que aborda o primeiro elemento além do campo de entrada monetária.

Observações

A primeira função de membro virtual protegido tenta corresponder a elementos sequenciais começando inicialmente na sequência [ , first) até reconhecer um campo de entrada monetário completo e lastnão vazio. Se for bem-sucedido, ele converte esse campo em uma sequência de um ou mais dígitos decimais, opcionalmente precedidos por um sinal de subtração (-), para representar a quantidade e armazena o resultado no objeto string_typeval. Ele retorna um iterador designando o primeiro elemento além do campo de entrada monetária. Caso contrário, a função armazena uma sequência vazia em val e define ios_base::failbit em State. Ele retorna um iterador designando o primeiro elemento além de qualquer prefixo de um campo de entrada monetário válido. Em ambos os casos, se o valor de retorno for lastigual a , a função será definida ios_base::eofbit em State.

A segunda função de membro virtual protegido se comporta da mesma forma que a primeira, exceto que, se bem-sucedida, converte a sequência de dígitos assinada opcionalmente em um valor de tipo long double e armazena esse valor em val.

O formato de um campo de entrada monetária é determinado pela faceta de localidadefac retornada pela chamada efetiva use_facet<moneypunct<CharType, intl>>( iosbase. getloc).

Mais especificamente:

  • FAC. neg_format determina a ordem em que os componentes do campo ocorrem.

  • FAC. curr_symbol determina a sequência de elementos que constitui um símbolo de moeda.

  • FAC. positive_sign determina a sequência de elementos que constitui um sinal positivo.

  • FAC. negative_sign determina a sequência de elementos que constitui um sinal negativo.

  • FAC. O agrupamento determina como os dígitos são agrupados à esquerda de qualquer ponto decimal.

  • FAC. thousands_sep determina o elemento que separa grupos de dígitos à esquerda de qualquer ponto decimal.

  • FAC. decimal_point determina o elemento que separa os dígitos inteiros dos dígitos da fração.

  • FAC. frac_digits determina o número de dígitos fracionários significativos à direita de qualquer ponto decimal. Ao analisar um valor monetário com mais dígitos fracionários do que os solicitados pelo frac_digits, do_get para de analisar depois de consumir na maioria dos frac_digits caracteres.

Se a string de sinal ( fac. negative_sign ou fac. positive_sign) tiver mais de um elemento, somente o primeiro elemento será correspondido onde o elemento igual a money_base::sign aparece no padrão de formato ( fac. neg_format). Quaisquer elementos restantes são correspondidos no final do campo de entrada monetária. Se nenhuma das cadeias de caracteres tiver um primeiro elemento que corresponda ao próximo elemento no campo de entrada monetária, a cadeia de caracteres de sinal será considerada vazia e o sinal será positivo.

Se iosbase. flags & showbase é diferente de zero, a string fac. curr_symbol deve corresponder onde o elemento igual a money_base::symbol aparece no padrão de formato. Caso contrário, se money_base::symbol ocorrer no final do padrão de formato e se nenhum elemento da cadeia de caracteres de sinal permanecer a ser correspondido, o símbolo de moeda não será correspondido. Caso contrário, o símbolo da moeda é opcionalmente correspondido.

Se não houver casos de fac. thousands_sep ocorrem na parte do valor do campo de entrada monetária (onde o elemento igual a money_base::value aparece no padrão de formato), nenhuma restrição de agrupamento é imposta. Caso contrário, quaisquer restrições de agrupamento impostas pelo fac. o agrupamento é imposto. Observe que a sequência de dígitos resultante representa um inteiro cujo fac de ordem baixa. frac_digits Os dígitos decimais são considerados à direita da vírgula decimal.

O espaço em branco arbitrário é correspondido onde o elemento igual a money_base::space aparece no padrão de formato, se ele aparecer diferente do final do padrão de formato. Caso contrário, nenhum espaço em branco interno será correspondido. Um elemento ch é considerado espaço em branco se use_facet<ctype<CharType>>( iosbase. getloc). is( ctype_base::space, ch) é true.

Exemplo

Veja o exemplo para get, que chama do_get.

money_get::get

Extrai um valor numérico de uma sequência de caracteres que representa um valor monetário.

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

primeira
Iterador de entrada abordando o início da sequência a ser convertida.

último
Iterador de entrada endereçando o final da sequência a ser convertida.

Internacional
Um valor booleano que indica o tipo de símbolo de moeda esperado na sequência: true se internacional, false se nacional.

Iosbase
Um sinalizador de formato que, quando definido, indica que o símbolo da moeda é opcional; caso contrário, é obrigatório

Estado
Define os elementos de máscara de bits apropriados para o estado do fluxo de acordo com o êxito das operações.

Val
Uma cadeia de caracteres que armazena a sequência convertida.

Valor de retorno

Um iterador de entrada que aborda o primeiro elemento além do campo de entrada monetária.

Observações

Ambas as funções de membro retornam do_get(first, last, Intl, Iosbase, State, val).

Exemplo

// 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;
}

money_get::iter_type

Um tipo que descreve um iterador de entrada.

typedef InputIterator iter_type;

Observações

O tipo é um sinônimo para o parâmetro de modelo InputIterator.

money_get::money_get

O construtor para objetos do tipo money_get que são usados para extrair valores numéricos de sequências que representam valores monetários.

explicit money_get(size_t _Refs = 0);

Parâmetros

_Refs
Valor inteiro usado para especificar o tipo de gerenciamento de memória para o objeto.

Observações

Os valores possíveis para o parâmetro _Refs e sua significância são:

  • 0: O tempo de vida do objeto é gerenciado pelas localidades que o contêm.

  • 1: O tempo de vida do objeto deve ser gerenciado manualmente.

  • > 1: Estes valores não estão definidos.

Não são possíveis exemplos diretos, porque o destruidor está protegido.

O construtor inicializa seu objeto base com locale::facet(_Refs).

money_get::string_type

Um tipo que descreve uma cadeia de caracteres que contém caracteres do tipo CharType.

typedef basic_string<CharType, Traits, Allocator> string_type;

Observações

O tipo descreve uma especialização do modelo de classe basic_string.

Ver também

<localidade>
faceta Classe
segurança de threads na biblioteca padrão C++