3 回答

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊
至少對(duì)于問題中提到的非負(fù)數(shù)(a),例如郵政編碼(b),這將起到解決作用。
#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) 設(shè)置字段的寬度。
std::setfill(fillchar) 設(shè)置填充字符。
std::setiosflags(align) 設(shè)置對(duì)齊方式,其中align是ios :: left或ios :: right。
而且,僅根據(jù)您的喜好使用<<,我強(qiáng)烈建議您研究一下fmt庫(kù)。這是對(duì)我們用于格式化內(nèi)容的工具包的重要補(bǔ)充,并且比大量長(zhǎng)度的流管道要好得多,它允許您執(zhí)行以下操作:
cout << fmt::format("{:05d}", zipCode);
LEWG目前也將其針對(duì)C ++ 20,這意味著它有望在那時(shí)成為該語(yǔ)言的基礎(chǔ)部分(或者幾乎可以肯定的是,如果它不十分流行的話)。
(a)如果確實(shí)需要處理負(fù)數(shù),則可以使用std::internal以下方法:
cout << internal << setw(5) << setfill('0') << zipCode << endl;
這會(huì)將填充字符之間的符號(hào)和幅度。
(b)本人(“所有郵政編碼都不為負(fù)”)是我的假設(shè),但我認(rèn)為是一個(gè)相對(duì)安全的假設(shè):-)

TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個(gè)贊
使用setw和setfill調(diào)用:
std::cout << std::setw(5) << std::setfill('0') << zipCode << std::endl;

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個(gè)贊
要么,
char t[32];
sprintf_s(t, "%05d", 1);
將輸出00001,因?yàn)镺P已經(jīng)想要做
- 3 回答
- 0 關(guān)注
- 598 瀏覽
添加回答
舉報(bào)