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 N – width 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