Eu quero cout
gerar um int com zeros à esquerda, para que o valor 1
seja impresso como 001
e o valor 25
impresso como 025
. Como posso fazer isso?
c++
formatting
cout
jamieQ
fonte
fonte
Respostas:
Com o seguinte,
a saída será
setfill
é definido como o caractere de espaço (' '
) por padrão.setw
define a largura do campo a ser impresso, e é isso.Se você estiver interessado em saber como formatar os fluxos de saída em geral, escrevi uma resposta para outra pergunta, espero que seja útil: Formatando a Saída do Console C ++.
fonte
char* or char[]
) para não console diretamente. Na verdade eu estou escrevendo uma função que retorna formatado seqüência<iostream>
e<iomanip>
na parte superior do seu arquivo, e precisará escreverusing namespace std;
, mas isso é uma prática inadequada; portanto, talvez prefira os três identificadores nesta respostastd::
.Outra maneira de conseguir isso é usar a
printf()
função antiga da linguagem CVocê pode usar isso como
Isso será impresso
09 - 01 - 0001
no console.Você também pode usar outra função
sprintf()
para gravar saída formatada em uma string como abaixo:Não se esqueça de incluir o
stdio.h
arquivo de cabeçalho no seu programa para essas duas funçõesCoisa a ser notada:
Você pode preencher o espaço em branco por 0 ou por outro caractere (não número).
Se você escrever algo como um
%24d
especificador de formato, isso não preencherá2
espaços em branco. Isso definirá o bloco24
e preencherá os espaços em branco.fonte
Isso produz a saída:
fonte
fonte
char* or char[]
) para não console diretamente. Na verdade eu estou escrevendo uma função que retorna formatado seqüênciastd::stringstream
.sprintf(s, "%02d-%02d-%04d", dd, mm, yy);
wheres
ischar*
edd, mm, yy
are doint
tipo. Isso escreverá o02-02-1999
formato de acordo com os valores nas variáveis.Eu usaria a seguinte função. Eu não gosto
sprintf
; não faz o que eu quero !!fonte
Outro exemplo para gerar data e hora usando zero como caractere de preenchimento em instâncias de valores de um dígito: 2017-06-04 18:13:02
fonte