字串能用於儲存人工或自然語言的文字,自然語言是複雜的,文字處理也是有各種各樣的需求,C++標準庫從 80 年代至今的發展已加入了大量的功能,但要集中處理各種場合的「最大公因數」,以至於處理歷史包袱,及各個作業系統對語言處理的偏好。
隨便列一下「理想的」字串類能支援什麼:
歡迎補充。
字串能用於儲存人工或自然語言的文字,自然語言是複雜的,文字處理也是有各種各樣的需求,C++標準庫從 80 年代至今的發展已加入了大量的功能,但要集中處理各種場合的「最大公因數」,以至於處理歷史包袱,及各個作業系統對語言處理的偏好。
隨便列一下「理想的」字串類能支援什麼:
跨平臺、跨編譯器、跨 C++ 版本支援 UTF-8/16/32,能包含 字元支援 Multi-Byte Character Set (MBCS) 等各種編碼各種運算能正確處理各種編碼的字元邊界,包括 UTF-16 代理對(surrogate pair)支援各種編碼間的轉換支援各種語言的各種排序(如包括漢語拼音、筆劃)支援編譯期和執行期計算雜湊值支援字串檢視(string view)及運算可自訂分配器(custom allocator),可利用非連續的記憶體儲存長字串支援 Immutable 和 String Interning可選寫入時複製(Copy-On-Write, COW)最佳化可選短字串最佳化(Short String Optimization,SSO)支援各種 SIMD 指令集的最佳化低耦合性,用不到的功能不會被連結至執行檔案歡迎補充。