Partilhar via


money_put Classe

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 dentro de um programa para codificar caracteres em uma localidade.

OutputIterator
O tipo de iterador para o qual as funções de colocação monetária escrevem sua saída.

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_put O construtor para objetos do tipo money_put.

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 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 um número ou uma cadeia de caracteres em uma sequência de caracteres que representa um valor monetário.
colocar Converte um número ou uma cadeia de caracteres em uma sequência de caracteres que representa um valor monetário.

Requerimentos

Cabeçalho:<localidade>

Espaço de nomes: std

money_put::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_put::d o_put

Uma função virtual chamada para converter um 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

seguinte
Um iterador endereçando o primeiro elemento da cadeia de caracteres inserida.

_Intl
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

_Fill
Um caractere que é usado para espaçamento.

Val
Um objeto string a ser convertido.

Valor de retorno

Um iterador de saída aborda a posição um além do último elemento produzido.

Observações

A primeira função de membro virtual protegido gera elementos sequenciais começando em seguida para produzir um campo de saída monetária a partir do objeto string_typeval. A sequência controlada por val deve começar com um ou mais dígitos decimais, opcionalmente precedidos por um sinal de menos (-), que representa a quantidade. A função retorna um iterador designando o primeiro elemento além do campo de saída monetária gerado.

A segunda função de membro virtual protegido se comporta da mesma forma que a primeira, exceto que efetivamente primeiro converte val em uma sequência de dígitos decimais, opcionalmente precedida por um sinal de menos e, em seguida, converte essa sequência como acima.

O formato de um campo de saída monetária é determinado pela faceta de localidade fac retornada pela chamada (efetiva) use_facet<moneypunct<CharType, intl>>( iosbase. getloc).

Mais especificamente:

  • FAC. pos_format determina a ordem em que os componentes do campo são gerados para um valor não negativo.

  • FAC. neg_format determina a ordem em que os componentes do campo são gerados para um valor negativo.

  • FAC. curr_symbol determina a sequência de elementos a serem gerados para um símbolo de moeda.

  • FAC. positive_sign determina a sequência de elementos a gerar para um sinal positivo.

  • FAC. negative_sign determina a sequência de elementos a gerar para 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 de quaisquer dígitos de fração.

  • FAC. frac_digits determina o número de dígitos fracionários significativos à direita de qualquer ponto decimal.

Se a string do sinal ( fac. negative_sign ou fac. positive_sign) tiver mais de um elemento, somente o primeiro elemento será gerado onde o elemento igual a money_base::sign aparecerá no padrão de formato ( fac. neg_format ou fac. pos_format). Quaisquer elementos restantes são gerados no final do campo de produção monetária.

Se iosbase. flags & showbase é diferente de zero, a string fac. curr_symbol é gerado onde o elemento igual a money_base::symbol aparece no padrão de formato. Caso contrário, nenhum símbolo de moeda será gerado.

Se nenhuma restrição de agrupamento for imposta pelo fac. Agrupamento (seu primeiro elemento tem o valor CHAR_MAX), em seguida, nenhuma instância de FAC. thousands_sep são gerados na parte do valor do campo de produção monetária (onde o elemento igual a money_base::value aparece no padrão de formato). Se fac. frac_digits é zero, então nenhuma instância de fac. decimal_point é gerado após os dígitos decimais. Caso contrário, o campo de saída monetária resultante coloca o fac de ordem baixa. frac_digits dígitos decimais à direita da vírgula decimal.

O preenchimento ocorre como para qualquer campo de saída numérico, exceto se iosbase. sinalizadores & iosbase. interno é diferente de zero, qualquer preenchimento interno é gerado onde o elemento igual a money_base::space aparece no padrão de formato, se aparecer. Caso contrário, o preenchimento interno ocorre antes da sequência gerada. O caractere de preenchimento é preenchimento.

A função chama iosbase. width(0) para redefinir a largura do campo para zero.

Exemplo

Veja o exemplo para put, onde a função de membro virtual é chamada por put.

money_put::iter_type

Um tipo que descreve um iterador de saída.

typedef OutputIterator iter_type;

Observações

O tipo é um sinônimo para o 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 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_put::p ut

Converte um 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

seguinte
Um iterador endereçando o primeiro elemento da cadeia de caracteres inserida.

_Intl
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

_Fill
Um caractere que é usado para espaçamento.

Val
Um objeto string a ser convertido.

Valor de retorno

Um iterador de saída aborda a posição um além do último elemento produzido.

Observações

Ambas as funções de membro retornam do_put(next, _Intl, _Iosbase, _Fillval, ).

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;

Observações

O tipo descreve uma especialização de modelo de classe basic_string cujos objetos podem armazenar sequências de elementos da sequência de origem.

Ver também

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