格式化輸出
列印操作由std::fmt裡面所定義的一系列巨集來處理,其中包括:
format!:將格式化文字寫到字串(string)。(譯註: 字串是返回值不是引數。)
print!:與 format!類似,但將文字輸出到控制台。
println!: 與 print!類似,但輸出結果追加乙個換行符。
所有的解析文字都以相同的方式進行。另外一點是格式化的正確性在編譯時檢查。
fn main() ` 會被任意變數內容所替換。
// 值內容會轉化成字串。
println!("{} days", 31);
// 不加字尾的話,31自動成為 i32 型別。
// 你可以新增字尾來改變 31 的原來型別。
// 下面有多種可選形式。
// 可以使用的位置引數。
println!(", this is . , this is ", "alice", "bob");
// 可以使用賦值語句。
println!(" ",
object="the lazy dog",
subject="the quick brown fox",
verb="jumps over");
// 特殊的格式實現可以在後面加上 `:` 符號。
println!("{} of people know binary, the other half don't", 1, 2);
// 你可以按指定寬度來右對齊文字。
// 下面語句輸出" 1",5個空格後面連著1。
println!("", number=1, width=6);
// 你可以對數字左邊位數上補0。下面語句輸出"000001"。
println!("", number=1, width=6);
// println! 會檢查使用到的引數數量是否正確。
println!("my name is , ", "bond");
// 改正 ^ 補上漏掉的引數: "james"
// 建立乙個包含` i32 `型別結構體(structure)。命名為 `structure`。
#[allow(dead_code)]
struct structure(i32);
// 但是像結構體這樣自定義型別需要更複雜的方式來處理。
// 下面語句無法執行。
println!("this struct `{}` won't print...", structure(3));
// 改正 ^ 注釋掉此行。
std::fmt包含多種traits(traits翻譯成中文有「特徵,特性」等意思)來控制文字顯示。這裡面有兩個重要的基本格式型別如下:
fmt::debug:使用 作標記。格式化文字以便除錯。
fmt::display:使用 {} 作標記。以優雅和友好的方式來格式文字。
在本書中我們使用fmt::display,因為標準庫提供了這些型別的實現。若要列印自定義型別的文字,需要更多的步驟。
動手試一試
改正上面**中的兩個錯誤(見 改正),使得執行不會報錯。
參見:
格式化輸出
a 浮點數 十六進製制數字和p 記數法 a 浮點數 十六進製制數字和p 記法 c 乙個字元 char c 乙個iso寬字元 d 有符號十進位制整數 int ld ld 長整型資料 long hd 輸出短整形。e 浮點數 e 記數法 e 浮點數 記數法 f 單精度浮點數 預設float 十進位制記數法...
格式化輸出
a 浮點數 十六進製制數字和p 記數法 a 浮點數 十六進製制數字和p 記法 c 乙個字元 char c 乙個iso寬字元 d 有符號十進位制整數 int ld ld 長整型資料 long hd 輸出短整形。e 浮點數 e 記數法 e 浮點數 記數法 f 單精度浮點數 預設float 十進位制記數法...
格式化輸出
簡單輸出 print 你好小明 print 你好小紅 print 你好小李 帶變數的輸出 更有靈活性,易於維護 name 小李 print name 加號拼接字串 pay 8 print 花費一共 pay 元 print裡用逗號列印多個變數 name 小明 score 90 print name,s...