3 回答

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

TA貢獻2036條經驗 獲得超8個贊
使用setw和setfill調用:
std::cout << std::setw(5) << std::setfill('0') << zipCode << std::endl;
- 3 回答
- 0 關注
- 601 瀏覽
添加回答
舉報