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