Mantén la atención ya que en esta sección vas a hallar el resultado que buscas.
Solución:
Esto hará el truco, al menos para números no negativos.(a) como los códigos postales(B) mencionado en su pregunta.
#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;
Los manipuladores de E/S más comunes que controlan el relleno son:
std::setw(width)
establece el ancho del campo.std::setfill(fillchar)
establece el carácter de relleno.std::setiosflags(align)
establece la alineación, donde align es ios::left o ios::right.
Y solo en su preferencia para usar <<
le sugiero encarecidamente que busque en el fmt
biblioteca (consulte https://github.com/fmtlib/fmt). Esta ha sido una gran adición a nuestro conjunto de herramientas para formatear cosas y es mucho mejor que las canalizaciones de transmisión de longitud masiva, lo que le permite hacer cosas como:
cout << fmt::format(":05d", zipCode);
Y actualmente LEWG también está apuntando a C++ 20, lo que significa que, con suerte, será una parte básica del lenguaje en ese punto (o casi seguro más adelante si no se cuela del todo).
(a) Si usted hacer necesita manejar números negativos, puede usar std::internal
como sigue:
cout << internal << setw(5) << setfill('0') << zipCode << endl;
Esto coloca el carácter de relleno Entre el signo y la magnitud.
(B) Esto ("todos los códigos postales no son negativos") es una suposición de mi parte, pero razonablemente segura, lo garantizo 🙂
Use las llamadas setw y setfill:
std::cout << std::setw(5) << std::setfill('0') << zipCode << std::endl;
cout << setw(4) << setfill('0') << n << endl;
desde:
http://www.fredosaurus.com/notes-cpp/io/omanipulators.html
Calificaciones y comentarios
Acuérdate de que tienes la capacidad de decir si te ayudó.