DAY24:從不同的角度「觀賞」、「操作」字串與字元陣列
程式設計師最常面對的問題多跟「字的處理」有關。C++17 引入了新的類別—std::string_view
。此類別的設計重點是不影響效能(額外的複製操作)的前提下,提供更多的功能。
string_view
操作的對象是一個連續的字元(sequence of characters),在不增加額外記憶體的前題下,對資料進行「唯讀(Read-only)」操作。
根據上述定義,列出幾個 string_view
的特點:
string_view
的操作保證不挖新的記憶體string_view
也不會使用新的記憶體string_view
所參考的資料,其擁有權(釋放或刪除)不在 string_view
本身string_view
期間一定要確保其操作的資料依然有效string_view
所操作的資料,不一定是 Null terminated由於不會有資料複製,因此傳遞 string_view
的成本很低,傳來傳去也不用擔心對效能造成太大影響。
由於是唯讀操作,使用 string_view
在語義上保證不會動到原本的字串資料。string_view
提供許多操作,有了這個唯讀的定義,開發者可以用其設計相關 API。
string_view
提供讓人安心使用的函數,若你的專案支援 C++17,給他試一下,你會喜歡的。