Печатать ведущие нули с оператором вывода С++ (эквивалент printf)?

Как я могу отформатировать мой вывод на С++? Другими словами, что эквивалентно С++ для использования printf следующим образом:

printf("%05d", zipCode);

Я знаю, что могу просто использовать printf в С++, но я бы предпочел оператор вывода <<.

Вы могли бы использовать следующее?

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

Ответ 1

Это сделает трюк:

#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;

Наиболее распространенными манипуляторами ввода-вывода, которые управляют дополнением, являются:

  • std::setw(width) устанавливает ширину поля.
  • std::setfill(fillchar) задает символ заполнения.
  • std::setiosflags(align) устанавливает выравнивание, где align - ios:: left или ios:: right.

Ответ 2

Используйте вызовы setw и setfill:

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

Ответ 4

или,

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

выведет 00001, поскольку OP уже хотел выполнить