Classe money_put
O modelo de classe descreve um objeto que pode servir como uma faceta de localidade para controlar conversões de valores monetários em sequências do tipo CharType
.
Sintaxe
template <class CharType,
class OutputIterator = ostreambuf_iterator<CharType>>
class money_put : public locale::facet;
Parâmetros
CharType
O tipo usado em um programa para codificar caracteres em uma localidade.
OutputIterator
O tipo de iterador para o qual as funções put monetárias gravam sua saída.
Comentários
Como qualquer faceta de localidade, a ID de objeto estático tem um valor armazenado inicial de zero. A primeira tentativa de acessar seu valor armazenado armazena um valor positivo exclusivo na id.
Construtores
Construtor | Descrição |
---|---|
money_put | O construtor para objetos do tipo money_put . |
Typedefs
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 saída. |
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_put | Uma função virtual chamada para converter o número ou uma cadeia de caracteres em uma sequência de caracteres que representa um valor monetário. |
put | Converte o número ou uma cadeia de caracteres em uma sequência de caracteres que representa um valor monetário. |
Requisitos
Cabeçalho:<locale>
Namespace: std
money_put::char_type
Um tipo que é usado para descrever um caractere usado por uma localidade.
typedef CharType char_type;
Comentários
O tipo é um sinônimo do parâmetro de modelo CharType.
money_put::d o_put
Uma função virtual chamada para converter o número ou uma cadeia de caracteres em uma sequência de caracteres que representa um valor monetário.
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
avançar
Um iterador que trata o primeiro elemento na cadeia de caracteres inserida.
_Intl
Um valor booliano que indica o tipo de símbolo de moeda esperado na sequência: true
se internacional, false
se doméstico.
_Iosbase
Um sinalizador de formato que quando definido indica que o símbolo de moeda é opcional; caso contrário, será obrigatório
_Fill
Um caractere que é usado para espaçamento.
val
Um objeto de cadeia de caracteres a ser convertido.
Valor de retorno
Um iterador de saída que aborda uma posição além do último elemento produzido.
Comentários
A primeira função membro protegida virtual gera elementos sequenciais começando em next para produzir um campo de saída monetário do objeto string_type val. A sequência controlada por val deve começar com um ou mais dígitos decimais, opcionalmente precedidos por um sinal de subtração (–), que representa a quantidade. A função retorna um iterador que designa o primeiro elemento além do campo de saída monetário gerado.
A segunda função membro protegida virtual se comporta da mesma maneira que a primeira, exceto que ela efetivamente primeiro converte val em uma sequência de dígitos decimais, opcionalmente precedida por um sinal de subtração e converte essa sequência como acima.
O formato de um campo de saída monetário é determinado pela fac locale facet retornada pela chamada (efetiva) use_facet<moneypunct<CharType, intl>>( iosbase. getloc).
Especificamente:
fac. pos_format determina a ordem na qual os componentes do campo são gerados para um valor não negativo.
fac. neg_format determina a ordem na qual os componentes do campo são gerados para um valor negativo.
fac. curr_symbol determina a sequência de elementos a ser gerada para um símbolo de moeda.
fac. positive_sign determina a sequência de elementos a ser gerada para um sinal positivo.
fac. negative_sign determina a sequência de elementos a ser gerada para um sinal negativo.
fac. grouping determina como os dígitos são agrupados à esquerda da vírgula decimal.
fac. thousands_sep determina o elemento que separa grupos de dígitos à esquerda da vírgula decimal.
fac. decimal_point determina a sequência que separa os dígitos de inteiros de qualquer dígito de fração.
fac. frac_digits determina o número de dígitos de fração significativa à direita de qualquer vírgula decimal.
Se a cadeia de caracteres de sinal ( fac. negative_sign
ou fac. positive_sign
) tiver mais de um elemento, somente o primeiro elemento será gerado, em que o elemento igual a money_base::sign aparecerá no padrão de formato ( fac. neg_format
ou fac. pos_format
). Todos os elementos restantes são gerados ao final do campo de saída monetário.
Se iosbase. flags & showbase é diferente de zero, a string fac. curr_symbol
será gerada quando o elemento igual a money_base::symbol aparece no padrão do formato. Caso contrário, nenhum símbolo de moeda será gerado.
Se nenhuma restrição de agrupamento for imposta por fac. grouping (o primeiro elemento tem o valor CHAR_MAX), então não há instâncias de fac. thousands_sep
são gerados na parte de valor do campo de saída monetário (em que o elemento igual a money_base::value aparece no padrão de formato). Se fac. frac_digits
for zero, nenhuma instância de fac. decimal_point
será gerada após os dígitos decimais. Caso contrário, o campo de saída monetário resultante colocará os dígitos decimais fac. frac_digits
de ordem baixa à direita da vírgula decimal.
O preenchimento ocorre para qualquer campo de saída numérico, exceto se iosbase. bandeiras & iosbase. internal for diferente de zero, o preenchimento será gerado quando o elemento igual a money_base::space aparece no padrão de formato, se ele aparecer. Caso contrário, o preenchimento interno ocorrerá antes da sequência gerada. O caractere de preenchimento é fill.
A função chama iosbase. width(0) para redefinir a largura do campo como zero.
Exemplo
Veja o exemplo de put, em que a função membro virtual é chamada por put.
money_put::iter_type
Um tipo que descreve um iterador de saída.
typedef OutputIterator iter_type;
Comentários
O tipo é um sinônimo do parâmetro de modelo OutputIterator.
money_put::money_put
O construtor para objetos do tipo money_put
.
explicit money_put(size_t _Refs = 0);
Parâmetros
_Refs
Valor inteiro usado para especificar o tipo de gerenciamento de memória do objeto.
Comentários
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: esses valores não estão definidos.
Nenhum exemplo direto é possível, pois o destruidor está protegido.
O construtor inicializa seu objeto base com locale::facet( _Refs
).
money_put::p ut
Converte o número ou uma cadeia de caracteres em uma sequência de caracteres que representa um valor monetário.
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
avançar
Um iterador que trata o primeiro elemento na cadeia de caracteres inserida.
_Intl
Um valor booliano que indica o tipo de símbolo de moeda esperado na sequência: true
se internacional, false
se doméstico.
_Iosbase
Um sinalizador de formato que quando definido indica que o símbolo de moeda é opcional; caso contrário, será obrigatório
_Fill
Um caractere que é usado para espaçamento.
val
Um objeto de cadeia de caracteres a ser convertido.
Valor de retorno
Um iterador de saída que aborda uma posição além do último elemento produzido.
Comentários
Ambas as funções membro retornam do_put( next
, _Intl
, _Iosbase
, _Fill
, val
).
Exemplo
// 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
Um tipo que descreve uma cadeia de caracteres que contém caracteres do tipo CharType
.
typedef basic_string<CharType, Traits, Allocator> string_type;
Comentários
O tipo descreve uma especialização da classe de modelo basic_string cujos objetos podem armazenar sequências de elementos da sequência de origem.
Confira também
<locale>
Classe facet
Acesso Thread-Safe na Biblioteca Padrão C++