Partilhar via


num_put::do_put

Uma função virtual que foi chamada para converter um número em uma sequência de CharTypes que representa o número formatou para uma localidade especificada.

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 inserida.

  • _Iosbase
    Especifica o fluxo que contém a localidade à faceta de numpunct usada para interromper a saída e os sinalizadores para formatar a saída.

  • _Fill
    Um caractere que é usado espaçando.

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

Valor de retorno

Um iterador de saída os endereços que a posição uma elemento além do mais recente gerada.

Comentários

A primeira função de membro protegida virtual gerencia os elementos sequenciais que começam em _Next a gerar um campo de saída inteira do valor de _Val. A função retorna um iterador que designa o local a seguir para inserir um elemento além de campo gerado de saída inteiros.

O campo de saída de inteiro é gerado por mesmas regras usadas pelas funções de cópia gerando uma série de elementos de char em um arquivo. Cada elemento como char é assumido para mapear para um elemento equivalente de tipo CharType por um mapeamento simples, um para um. Quando uma função de cópia preenche um campo com ou espaços ou o dígito 0, porém, do_put usa em vez fill. A especificação de conversão equivalente de impressão é determinada como segue:

  • Se iosbase. == &ios_base::octdesinalizadoresios_base::basefield , a especificação de conversão é lo.

  • Se o ios_base::== &hexadecimalde iosbase.flagsios_base::basefield , a especificação de conversão é lx.

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

Se iosbase.largura for diferente de zero, um campo que a largura desse valor é pré-anexado. A função chamar iosbase.width(0) para redefinir a largura de campo como zero.

O preenchimento ocorre somente se o número mínimo de elementos Em necessário especificar o campo de saída é menor que iosbase.largura. Esse preenchimento consiste em uma sequência de N – cópias de width de fill. Preencher ocorre na seguinte maneira:

  • Se iosbase. == &ios_base::esquerdodeflagsios_base::adjustfield , o sinalizador é pré-anexado. (O preenchimento ocorre depois do texto gerado.)

  • Se o ios_base::== &internode iosbase.flagsios_base::adjustfield , o sinalizador 0 é pré-anexado. (Para um campo numérico de saída, preenchimento ocorre quando a revestimento das funções de cópia com 0.)

  • Se não, nenhum sinalizador adicional é pré-anexado. (O preenchimento ocorre antes da sequência gerado.)

Finalmente:

  • Se iosbase.flags &ios_base::showpos for diferente de zero, o sinalizador + é pré-anexado a especificação de conversão.

  • Se iosbase.flags & ios_base::showbase for diferente de zero, o sinalizador # é pré-anexado a especificação de conversão.

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

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

  • fac.thousands_sep determina a sequência que separa grupos de dígitos à esquerda de qualquer ponto decimal

Se nenhuma restrição de agrupamento é imposta por fac.grouping (seu primeiro elemento tem o valor CHAR_MAX), nenhuma em instâncias de fac.thousands_sep é gerado no campo de saída. Caso contrário, os separadores são inseridos depois que a conversão de cópia 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 comportará da mesma forma que os primeiros, 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 comportará da mesma forma que os primeiros, exceto que gerencia um campo de ponto flutuante de saída de valor de val.fac.decimal_point determina a sequência que separa os dígitos do inteiro de dígitos de fração. A especificação de conversão equivalente de impressão é determinada como segue:

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

  • Se iosbase. == &ios_base::científicodeflagsios_base::floatfield , a especificação de conversão é le. Se iosbase.flags &ios_base::maiúsculas for diferente de zero, e é substituído pelo E.

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

Se iosbase.flags &ios_base::fixed for diferente de zero ou se iosbase.precisão for maior que zero, uma precisão com o valor iosbase.precision é pré-anexado a especificação de conversão. Qualquer preenchimento se comportará da mesma forma que para um campo de saída inteiros. O caractere de preenchimento é fill. Finalmente:

  • Se iosbase.flags &ios_base::showpos for diferente de zero, o sinalizador + é pré-anexado a especificação de conversão.

  • Se iosbase.flags &ios_base::showpoint for diferente de zero, o sinalizador # é pré-anexado 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 comportará da mesma forma o terceiro, exceto que o qualificador l na especificação de conversão é substituído com 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;

comporta-se igual a primeira, 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 comportará da mesma forma que os primeiros, exceto que gerencia um campo booliano de saída de _Val.

Um campo booliano de saída terá 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 normalmente produz uma sequência gerado de 0 (para false) ou 1 (para true). Caso contrário, a sequência é gerado um ou outro 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 comportará da mesma forma que os primeiros, 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 comportará da mesma forma que os primeiros, exceto que substitui uma especificação de conversão de ld com llu.

Exemplo

Consulte o exemplo de colocado, que chama do_put.

Requisitos

localidade <deCabeçalho: >

Namespace: std

Consulte também

Referência

Classe num_put