如何在C++中格式化我的輸出?換句話說,什麼是C++相當於使用printf
這樣的:用C++輸出運算符打印前導零(相當於printf)?
printf("%05d", zipCode);
我知道我可以只在C++中使用printf
,但我寧願輸出操作<<
。
您只需使用以下內容?
std::cout << "ZIP code: " << sprintf("%05d", zipCode) << std::endl;
如何在C++中格式化我的輸出?換句話說,什麼是C++相當於使用printf
這樣的:用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)
套t的寬度他領域。std::setfill(fillchar)
設置填充字符。std::setiosflags(align)
設置對齊,其中align是ios :: left或ios :: right。使用setw and setfill電話:
std::cout << std::setw(5) << std::setfill('0') << zipCode << std::endl;
cout << setw(4) << setfill('0') << n << endl;
來自:
,或者
char t[32];
sprintf_s(t, "%05d", 1);
將輸出00001作爲OP已經想做
重新激活,+ 1'ed因爲它顯示瞭如何在任何名稱空間中執行它(還添加了setfill,sqook,希望你不要m IND)。 – paxdiablo 2009-02-10 02:21:19
夠公平的。 「使用名稱空間標準;」肯定是邪惡的。 ;) – 2009-02-10 02:29:02
我認爲這個答案應該提到,不同於`std :: setw`的設置,`std :: setfill`的設置將在執行輸出後粘住,換句話說就是`std :: cout`將被永久更改(直到被另一個`std :: setfill`修改)。由於這不太可取,最好保存並恢復以前的填充字符。 – 2017-05-18 07:18:56