Imprimir zeros à esquerda com o operador de saída C ++?

Como posso formatar minha saída em C ++? Em outras palavras, qual é o equivalente em C ++ ao uso de printf assim:

 printf("%05d", zipCode); 

Eu sei que eu poderia apenas usar printf em C ++, mas eu preferiria o operador de saída << .

Você usaria apenas o seguinte?

 std::cout << "ZIP code: " << sprintf("%05d", zipCode) << std::endl; 

Isto irá fazer o truque:

 #include  #include  using namespace std; cout << setw(5) << setfill('0') << zipCode << endl; // or use this if you don't like 'using namespace std;' std::cout << std::setw(5) << std::setfill('0') << zipCode << std::endl; 

Os manipuladores de IO mais comuns que controlam o preenchimento são:

  • std::setw(width) define a largura do campo.
  • std::setfill(fillchar) define o caractere de preenchimento.
  • std::setiosflags(align) define o alinhamento, onde align é ios :: left ou ios :: right.

Use as chamadas setw e setfill :

 std::cout << std::setw(5) << std::setfill('0') << zipCode << std::endl; 
 cout << setw(4) << setfill('0') << n << endl; 

a partir de:

http://www.fredosaurus.com/notes-cpp/io/omanipulators.html

ou,

 char t[32]; sprintf_s(t, "%05d", 1); 

irá gerar 00001 como o OP já queria fazer