亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用C ++輸出運算符打印前導零?

使用C ++輸出運算符打印前導零?

C++
拉風的咖菲貓 2019-12-27 12:37:05
如何使用C ++格式化輸出?換句話說,C ++的等效用法是printf這樣的:printf("%05d", zipCode);我知道我只能printf在C ++中使用,但是我更喜歡output運算符<<。您會使用以下內容嗎?std::cout << "ZIP code: " << sprintf("%05d", zipCode) << std::endl;
查看完整描述

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)本人(“所有郵政編碼都不為負”)是我的假設,但我認為是一個相對安全的假設:-)


查看完整回答
反對 回復 2019-12-27
?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

使用setw和setfill調用:


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


查看完整回答
反對 回復 2019-12-27
?
九州編程

TA貢獻1785條經驗 獲得超4個贊

要么,


char t[32];

sprintf_s(t, "%05d", 1);

將輸出00001,因為OP已經想要做


查看完整回答
反對 回復 2019-12-27
  • 3 回答
  • 0 關注
  • 601 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號