Saída formatada em C ++

Cada fluxo de saída tem uma função de membro de precisão. Depois que a função de precisão é chamada para um determinado fluxo de saída, ao emitir um número com um ponto decimal para o fluxo, um total de dois dígitos significativos são reservados ou dois dígitos após o ponto decimal são reservados. O método de implementação específico Determinado pelo compilador. A função de precisão só é eficaz para o fluxo especificado.
A função de membro setf é uma abreviação de set flags, não de set format! É uma instrução para fazer uma coisa de maneira alternativa.

O sinalizador ios :: fixed faz com que o fluxo use a notação de ponto fixo para gerar números de tipo duplo em vez de usar a notação e

O sinalizador ios :: showpoint requer que o fluxo sempre inclua um ponto decimal em números de ponto flutuante.

O sinalizador ios :: scientific produzirá números em notação eletrônica.

ios :: showpos produzirá um sinal + antes de um inteiro positivo

Se o sinalizador ios :: right for usado, e largura for usada para especificar a largura do campo, o próximo item de saída será alinhado à direita. O padrão é este

Se o sinalizador ios :: left for usado e a largura for usada para especificar a largura do campo, o próximo item de saída será alinhado à esquerda com a função de membro de largura para definir a largura do campo. Por exemplo:

cout << "a";    
    cout.width(4);
    cout << 7 << endl;

Em seguida, imprima um 7. Existem 3 espaços entre a e 7, porque o padrão do sistema é definir ios :: right para alinhar à direita.

Observe que a função de membro de largura só é adequada para o próximo item a ser gerado. Se você deseja gerar vários itens, é necessário chamar width várias vezes. Se achar que é problemático, você pode usar o elemento de manipulação de fluxo setw.

Qualquer sinalizador definido pode ser cancelado chamando a função de membro unsetf, por exemplo:

  cout.unsetf(ios::showpos);

Você pode cancelar o sinal + antes do inteiro positivo.

manipuladores setw e setprecision.

操纵元是以非传统的方式调用的函数。操纵元位于插入操作符 << 之后。两个操纵元均在 iomanip 库中,要想使用,需要调用该库。

O manipulador setw tem a mesma função que a função membro de largura. Se você deseja definir a largura do campo várias vezes, é necessário chamar o manipulador setw várias vezes. Na verdade, o manipulador setw chama a função de membro de largura. O seguinte código:

  cout << "a" << set(5) << 1    
                << set(5) << 2
                << set(7) << 3 << endl;
                

O resultado desta frase é: a 1 2 3. Existem 4 espaços antes de 1, 2 e 6 espaços antes de 3.

  setprecision 操纵元和 precision 成员函数功能一样。如下代码:
  cout.setf(ios::fixed);
    cout.setf(ios::showpoint);
    cout << "a" << setprecision(2) << 1.2
                                 << 2.3 << endl;

O manipulador setprecision é o mesmo que a função de membro de precisão e é sempre eficaz após a configuração. A saída do exemplo acima: 1,20 2,30.
É melhor aplicar o que você aprendeu, e pode haver deficiências no acima, bem-vindo para apontar a discussão.
(Mais C / C ++ gratuito, Linux, Nginx, ZeroMQ, MySQL, Redis, fastdfs, MongoDB, ZK, streaming media, CDN, P2P, K8S, Docker, TCP / IP, corrotina, DPDK, etc. vários pontos de conhecimento produtos secos Materiais de aprendizagem mais grupo 960994558)

Acho que você gosta

Origin blog.csdn.net/weixin_52622200/article/details/110404678
Recomendado
Clasificación