用C ++输出运算符打印前导零(相当于printf)?

我如何使用C ++格式化我的输出? 换句话说,什么是C ++等同于使用printf这样的:

 printf("%05d", zipCode); 

我知道我可以在C ++中使用printf ,但我更喜欢输出运算符<<

你会只使用以下?

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

这将做的伎俩:

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

控制填充的最常见的IO操纵器是:

  • std::setw(width)设置字段的宽度。
  • std::setfill(fillchar)设置填充字符。
  • std::setiosflags(align)设置alignment,其中align是ios :: left或者ios :: right。

使用setw和setfill调用:

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

从:

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

要么,

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

将输出00001作为OP已经想要做的事情