百科问答小站 logo
百科问答小站 font logo



为什么C++库开发人员都喜欢自己造一个字符串类?你见过性能最好开源字符串类是哪个? 为什么? 第1页

  

user avatar   miloyip 网友的相关建议: 
      

字符串能用于存储人工或自然语言的文字,自然语言是复杂的,文字处理也是有各种各样的需求,C++标准库从 80 年代至今的发展已加入了大量的功能,但要集中处理各种场合的「最大公因数」,以至于处理历史包袱,及各个操作系统对语言处理的偏好。

随便列一下「理想的」字符串类能支持什么:

  • 跨平台、跨编译器、跨 C++ 版本
  • 支持 UTF-8/16/32,能包含 u0000 字符
  • 支持 Multi-Byte Character Set (MBCS) 等各种编码
  • 各种运算能正确处理各种编码的字符边界,包括 UTF-16 代理對(surrogate pair)
  • 支持各种编码间的转换
  • 支持各种语言的各种排序(如包括汉语拼音、笔划)
  • 支持编译期和运行期计算哈希值
  • 支持字符串视图(string view)及运算
  • 可自订分配器(custom allocator),可利用非连续的内存存储长字符串
  • 支持 ImmutableString Interning
  • 可选写入时复制(Copy-On-Write, COW)优化
  • 可选短字符串优化(Short String Optimization,SSO)
  • 支持各种 SIMD 指令集的优化
  • 低耦合性,用不到的功能不会被链接至执行文件

欢迎补充。




  

相关话题

  c++如此繁琐,为什么大学不直接开展python课程? 
  在有能够转化为C、C++、Java的第四代语言Raptor的情况下,为什么还需要C等程序设计语言? 
  在有固态硬盘的情况下,C++编译速度的瓶颈是否还在硬盘I/O? 
  c++怎么在1到n这些数中随机产生k(k<n)个?当然,k个数互不相等。有什么比较好的写法吗? 
  面试提问2的10次方是多少是否合适? 
  为什么纯虚函数不提供函数体语法?这样不是更方便么? 
  有什么很好的软件是用 Qt 编写的? 
  C++ 实现接口与实现分离后,文件变得更多了,到底有什么好处? 
  C++ 的智能指针不就基本解决了野指针问题了吗?为什么还要吹捧rust的内存安全? 
  如何理解 C++ 中这两个结构体的大小(size)? 

前一个讨论
刷leetcode使用python还是c++?
下一个讨论
郭德纲出现在霸道总裁文里会是什么样的?





© 2025-06-19 - tinynew.org. All Rights Reserved.
© 2025-06-19 - tinynew.org. 保留所有权利