主流 C++ 字符串類(std::string、CString)均基於「帶引用計數的線性結構」,但這只是一種實現。本質上,字符串是一個抽象數據類型 (ADT),可由多種底層容器實現:
vector)→ StringBuilderdeque)→ TextPoollist/slist)→ 函數式語言常見實現使用者應根據場景選擇最適合的具體實現,而非被單一 string 綁架。
ConstString 概念)不可變,提供核心查詢操作:迭代器、下標訪問、長度、子串 (substr)、查找 (find/rfind、find_first_of 等)、比較 (compare/icompare)、包含判斷 (contains)、轉 STL string、追蹤輸出、交換。所有操作基於 TempString 參數,實現極強泛化(一個函數覆蓋 char*、string、vector、String、StringBuilder 等 6+ 類型)。
MutableString : ConstString)繼承所有只讀操作,新增修改語義:clear、賦值 (assign/operator=)、連接 (append/operator+=)、插入 (insert)、替換 (replace)。具體實現(StringBuilder、TextPool)可擴展特有方法。
TempString 型別擦除與 concat 全局函數operator+,支持任意數量、任意類型字符串高效連接(單次分配、零拷貝潛力),如 concat(alloc, std_str, " ", vec_char, "!")。std::string 「既要 COW 又要線程安全」的自相矛盾。StringBuilder(小串) / TextPool(大串) / Rope(巨型編輯)。TempString 消除類型轉換樣板代碼,concat 實現真正的異構字符串高效拼接。字符串即 ADT,這一架構思想讓 C++ 文本處理擁有了媲美 Java/Go 標準庫的靈活性與擴展性。