2009-02-10 59 views

Respuesta

69

esto va a hacer el truco:

#include <iostream> 
#include <iomanip> 

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; 

Los más comunes manipuladores IO que controlan el relleno son:

  • std::setw(width) conjuntos el ancho de t el campo
  • std::setfill(fillchar) establece el carácter de relleno.
  • std::setiosflags(align) establece la alineación, donde la alineación es ios :: left o ios :: right.
+2

Tenga en cuenta que también puede usar 'cout << left' o' cout << right' para la alineación. –

7

Utilice los setw and setfill llamadas:

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

Re-activado y hecho +1 ya que muestra cómo hacerlo en cualquier espacio de nombres (también se agrega setfill, sqook, espero que no Indiana). – paxdiablo

+0

Bastante justo. "using namespace std;" es definitivamente malvado ;) –

+0

Creo que esta respuesta debería mencionar que, a diferencia de la configuración de 'std :: setw', el ajuste de' std :: setfill' se mantendrá después de que se realice la salida, en otras palabras, el carácter de relleno para 'std :: cout' se cambiará permanentemente (hasta que se modifique por otro 'std :: setfill'). Como es poco probable que esto sea deseable, parecería mejor guardar y restaurar el carácter de relleno anterior. –

0

o,

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

dará salida a 00001 como el PO ya quería hacer

+3

El OP pidió explícitamente una forma que use el operador '<<' en lugar de imprimir printf. – jankes

+0

@jankes que sería: std :: cout << "Código postal:" << sprintf_s (t, "% 05d", 1) << endl; –

Cuestiones relacionadas