2009-02-10 65 views
44

如何在C++中格式化我的輸出?換句話說,什麼是C++相當於使用printf這樣的:用C++輸出運算符打印前導零(相當於printf)?

printf("%05d", zipCode); 

我知道我可以只在C++中使用printf,但我寧願輸出操作<<

您只需使用以下內容?

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

回答

69

這將這樣的伎倆:

#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)套t的寬度他領域。
  • std::setfill(fillchar)設置填充字符。
  • std::setiosflags(align)設置對齊,其中align是ios :: left或ios :: right。
7

使用setw and setfill電話:

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

重新激活,+ 1'ed因爲它顯示瞭如何在任何名稱空間中執行它(還添加了setfill,sqook,希望你不要m IND)。 – paxdiablo 2009-02-10 02:21:19

+0

夠公平的。 「使用名稱空間標準;」肯定是邪惡的。 ;) – 2009-02-10 02:29:02

+0

我認爲這個答案應該提到,不同於`std :: setw`的設置,`std :: setfill`的設置將在執行輸出後粘住,換句話說就是`std :: cout`將被永久更改(直到被另一個`std :: setfill`修改)。由於這不太可取,最好保存並恢復以前的填充字符。 – 2017-05-18 07:18:56

0

,或者

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

將輸出00001作爲OP已經想做

相關問題