iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 25
0

DAY24:從不同的角度「觀賞」、「操作」字串與字元陣列

程式設計師最常面對的問題多跟「字的處理」有關。C++17 引入了新的類別—std::string_view。此類別的設計重點是不影響效能(額外的複製操作)的前提下,提供更多的功能。

string_view 操作的對象是一個連續的字元(sequence of characters),在不增加額外記憶體的前題下,對資料進行「唯讀(Read-only)」操作。

根據上述定義,列出幾個 string_view 的特點:

  1. 使用 string_view 的操作保證不挖新的記憶體
  2. 就算複製 string_view 也不會使用新的記憶體
  3. string_view 所參考的資料,其擁有權(釋放或刪除)不在 string_view 本身
  4. 承上,使用 string_view 期間一定要確保其操作的資料依然有效
  5. string_view 所操作的資料,不一定是 Null terminated

由於不會有資料複製,因此傳遞 string_view 的成本很低,傳來傳去也不用擔心對效能造成太大影響。

由於是唯讀操作,使用 string_view 在語義上保證不會動到原本的字串資料。string_view 提供許多操作,有了這個唯讀的定義,開發者可以用其設計相關 API。

string_view 提供讓人安心使用的函數,若你的專案支援 C++17,給他試一下,你會喜歡的。


上一篇
DAY23:更高層次的多緒組件 Task-based Programming
下一篇
DAY 24:數字字串間的轉換
系列文
山姆大叔談 C++:從歷史談起,再給個定義—Modern C++ 解惑26

尚未有邦友留言

立即登入留言