bob戰隊 rust 格式化輸出

2021-10-13 08:55:55 字數 1572 閱讀 5960

格式化輸出

列印操作由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...