rust- 標準庫 char

今天重新學習一下官方文檔關於 char的部分: https://doc.rust-lang.org/std/char/index.html

0x01 char的內存佔用長度

在rust中, 一個char 佔用4個字節, 可以通過下面的代碼來驗證:

    let v = vec!['h', 'e', 'l', 'l', 'o'];
    println!("{}", v.len());
    println!("{}", v.len() * std::mem::size_of::<char>());
----
5
20

同時, 如果我們想知道char在utf中實際長度是多少呢?可以如下方法獲得:

    println!("{}", 'A'.len_utf8());
    println!("{}", 'ß'.len_utf8());
    println!("{}", 'ℝ'.len_utf8());
    println!("{}", '💣'.len_utf8());
----
1
2
3
4

0x02 chars字符長度

可以看到"abc".len() 方法執行結果是返回字節長度,

   pub const fn len(&self) -> usize {
        self.as_bytes().len()
    }

但更多時候,我們希望拿到它的unicode字符個數.
應該如何實現呢?

    let cc = "love: ❤";
    println!("{}", &cc);
    println!("byte len   : {}", &cc.len());
    println!("char count : {}", &cc.chars().count());
----
love: ❤
byte len   : 9
char count : 7
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章