在 C 中使用前導零格式化輸出
在 C 中,格式化輸出對於以特定方式顯示資料至關重要。常見的情況是列印前導零,類似於 printf 使用 d 處理它的方式。雖然可以選擇使用 printf,但您可能會喜歡 C 流輸出運算子 (
實作前導零的一個選項是使用sprintf 將格式化字串與輸出運算子連接起來,如下所示:
std::cout << "ZIP code: " << sprintf("%05d", zipCode) << std::endl;
但是,有一個使用IO 的更乾淨的解決方案操縱器:
#include <iomanip> using namespace std; cout << setw(5) << setfill('0') << zipCode << endl; // or without 'using namespace std;' std::cout << std::setw(5) << std::setfill('0') << zipCode << std::endl;
setw(width) 設定欄位寬度,而setfill(char)指定用於填滿剩餘空間的字元。在本例中,「0」用於新增前導零。
請注意,這些操縱符會影響 cout 物件的全域狀態。為了避免在以後使用中出現意想不到的效果,您應該透過重置標誌來撤銷它們。
如果您喜歡簡潔的格式,請考慮使用fmt 庫:
cout << fmt::format("{:05d}", zipCode);
C 20 及更高版本已建置-支援std::format,並且C 23 引入了std: :print,為格式化輸出提供了更方便的選項。
For非負數,如郵遞區號,上面的代碼就夠了。但是,如果您需要處理負數,請新增 std::internal 以將填充字元放置在符號和大小之間:
cout << internal << setw(5) << setfill('0') << zipCode << endl;
以上是如何在 C 中格式化帶有前導零的輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!