Печатать ведущие нули с оператором вывода С++ (эквивалент 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;
Ответ 3
cout << setw(4) << setfill('0') << n << endl;
от
http://www.fredosaurus.com/notes-cpp/io/omanipulators.html
Ответ 4
или,
char t[32];
sprintf_s(t, "%05d", 1);
выведет 00001, поскольку OP уже хотел выполнить