Compartilhar via


num_put::do_put

Uma função virtual que é chamada para converter um número em uma seqüência de CharTypes que representa o número tiver formatado para uma localidade determinada.

virtual iter_type do_put(
    iter_type _Dest,
    ios_base& _Iosbase,
    _Elem _Fill,
    bool _Val
) const;
virtual iter_type do_put(
    iter_type _Dest,
    ios_base& _Iosbase,
    _Elem _Fill,
    long _Val
) const;
virtual iter_type do_put(
    iter_type _Dest,
    ios_base& _Iosbase,
    _Elem _Fill,
    unsigned long _Val
) const;
virtual iter_type do_put(
    iter_type _Dest,
    ios_base& _Iosbase,
    _Elem _Fill,
    double _Val
) const;
virtual iter_type do_put(
    iter_type _Dest,
    ios_base& _Iosbase,
    _Elem _Fill,
    long double _Val
) const;
virtual iter_type do_put(
    iter_type _Dest,
    ios_base& _Iosbase,
    _Elem _Fill,
    const void * _Val
) const;
virtual iter_type do_put(
    iter_type _Dest,
    ios_base& _Iosbase,
    _Elem _Fill,
    const long long _Val
) const; virtual iter_type do_put(
    iter_type _Dest,
    ios_base& _Iosbase,
    _Elem _Fill,
    const unsigned long long _Val
) const;

Parâmetros

  • _Next
    Um iterador que trata o primeiro elemento da cadeia de caracteres inserido.

  • _Iosbase
    Especificar o fluxo que contém a localidade com o aspecto de numpunct usada para interromper a saída e sinalizadores para formatar a saída.

  • _Fill
    Um caractere que é usado espaçando.

  • _Val
    O número ou o tipo booleano que é ser saída.

Valor de retorno

Um iterador de saída endereços que a posição uma além do último elemento gerado.

Comentários

A primeira função de membro protegida virtual gerará elementos seqüenciais que começam em _Next a gerar um campo de saída inteiro de valor de _Val.A função retorna um iterador que designa o próximo local para inserir um elemento além de campo gerado de saída inteiro.

O campo de saída inteiro é gerado pelas mesmas regras usadas pelas funções de impressão para gerar uma série de elementos de char a um arquivo.Cada tal elemento de caracteres é assumido mapear para um elemento equivalente de tipo CharType por um mapeamento simples, linear.Onde uma função de impressão preencha um campo ou com espaços ou dígito 0, no entanto, do_put em vez de isso use fill.A especificação de conversão equivalente de impressão é determinado como segue:

  • Se iosbase.sinalizadores & o == ios_base::octde ios_base::basefield , a especificação de conversão são lo.

  • Se iosbase.flags & o == ios_base::hexde ios_base::basefield , a especificação de conversão são lx.

  • Caso contrário, a especificação de conversão é ld.

Se iosbase.largura é diferente de zero, um campo que a largura de este valor prepended.A função então chama iosbase.width(0) para redefinir a largura do campo como zero.

O preenchimento ocorre apenas se o número mínimo de elementos Em necessário especificar o campo de saída é menor que iosbase.largura.Tal preenchimento consiste em uma seqüência de Nwidth cópias de fill.Enchimento ocorre na seguinte maneira:

  • Se iosbase.flags & o == ios_base::esquerdode ios_base::adjustfield , o parâmetro prepended.(O preenchimento ocorre após o texto gerado.)

  • Se iosbase.flags & o == ios_base::internode ios_base::adjustfield , o parâmetro 0 prepended.(Para um campo numérico de saída, enchimento ocorre onde o preenchimento de funções de impressão com 0).

  • Caso contrário, nenhum parâmetro adicional prepended.(O preenchimento ocorre antes que a seqüência gerado.)

Finalmente:

  • Se iosbase.flags & ios_base::showpos são diferente de zero, o parâmetro + prepended a especificação de conversão.

  • Se iosbase.flags & ios_base::showbase são diferente de zero, o parâmetro # prepended a especificação de conversão.

O formato de um campo de saída inteiro é determinado por aspecto da localidademaisfac retornado pela chamada use_facet <numpunct<Elem> (iosbase.getloc).Especificamente:

  • fac.clustering determina como os dígitos à esquerda são agrupados de um ponto decimal

  • fac.thousands_sep determina a seqüência que separa grupos de dígitos à esquerda de um ponto decimal

Se nenhuma restrição de agrupamento é imposta por fac.grouping (o primeiro elemento tem o valor CHAR_MAX), então quaisquer instâncias de fac.thousands_sep é gerado no campo de saída.Caso contrário, separadores são inseridos após a conversão de impressão ocorre.

a segunda função de membro protegida virtual:

virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
    CharType _Fill, unsigned long _Val) const;

se comporta o mesmo que o primeiro, exceto que substitui uma especificação de conversão de ld com lu.

a terceira função de membro protegida virtual:

virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
    CharType _Fill, double _Val) const;

se comporta o mesmo que o primeiro, exceto que gera um campo de ponto flutuante de saída do valor de val.fac.decimal_point determina a seqüência que separa os dígitos inteiro dos dígitos da fração.A especificação de conversão equivalente de impressão é determinado como segue:

  • Se iosbase.flags & ios_base::floatfield == ios_base::fixed, a especificação de conversão é lf.

  • Se iosbase.flags & ios_base::floatfield == ios_base::scientific, a especificação de conversão é le.Se iosbase.flags & ios_base::uppercase é diferente de zero, e é substituído por E.

  • Caso contrário, a especificação de conversão é lg.Se iosbase.flags & ios_base::uppercase é diferente de zero, g é substituído por G.

Se iosbase.flags & ios_base::fixed é diferente de zero ou se iosbase.precision é maior que zero, uma precisão com o valor iosbase.precision é prepended a especificação de conversão.Qualquer preenchimento se comporta o mesmo que para um campo de saída inteiro.o caractere de preenchimento é fill.Finalmente:

  • Se iosbase.flags & ios_base::showpos são diferente de zero, o parâmetro + prepended a especificação de conversão.

  • Se iosbase.flags & ios_base::showpoint são diferente de zero, o parâmetro # prepended a especificação de conversão.

a quarta função de membro protegida virtual:

virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
    CharType _Fill, long double _Val) const;

se comporta o mesmo o terceiro, exceto que o qualificador l na especificação de conversão é substituído por L.

a quinta função de membro protegida virtual:

virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
    CharType _Fill, const void *_Val) const;

se comporta o mesmo o primeiro, exceto que a especificação de conversão é p**,** mais qualquer qualificador necessário especificar o preenchimento.

a sexta função de membro protegida virtual:

virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
    CharType _Fill, bool _Val) const;

se comporta o mesmo que o primeiro, exceto que gera um campo booleano de saída de _Val.

Um campo booleano de saída usa um dos dois formulários.Se iosbase.flags & ios_base::boolalpha é false, a função de membro retorna do_put(_Next, _Iosbase, _Fill, (long)_Val), que gera gerado normalmente uma seqüência de 0 (para false) ou 1 (para true).Caso contrário, a seqüência gerado tanto fac.falsename) (para false), ou fac.truename (para true).

a sétima função de membro protegida virtual:

virtual iter_type do_put(iter_type next, ios_base& iosbase,
    Elem fill, long long val) const; 

se comporta o mesmo que o primeiro, exceto que substitui uma especificação de conversão de ld com lld.

a oitava função de membro protegida virtual:

virtual iter_type do_put(iter_type next, ios_base& iosbase,
    Elem fill, unsigned long long val) const; 

se comporta o mesmo que o primeiro, exceto que substitui uma especificação de conversão de ldcom llu.

Exemplo

Consulte o exemplo para colocado, que chama do_put.

Requisitos

Cabeçalho: <locale>

namespace: STD

Consulte também

Referência

num_put Class