Skip to content

一个受Redis中的SDS和Python中的字符串对象洗脑的动态字符串库

Notifications You must be signed in to change notification settings

jasonlvhit/qstring

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

qstring:一个受Redis中的SDS和Python中的字符串对象洗脑的动态字符串库

QString库是在标准C字符串(一个以'\0'结尾的char*)类型上的一个扩展,主要解决了下面这几方面的问题:

  • 在O(1)的时间内获取字符串长度
  • 池化(intern)短字符串
  • 提升长字符串追加操作中的效率,减少内存分配和复制次数
  • 使用引用计数管理相同的字符串,避免不必要的字符串拷贝
  • 支持深拷贝(deepcopy)
  • 缓存字符串哈希值,更快的字符串比较操作

同时,我也希望能够做到:

  • 线程安全

在QString库中,我们使用qstring标识符声明一个QString类型的实例,使用qstrnew函数从一个字符串字面值(const char*)构造一个qstring类型变量:

qstring s = qstrnew("Hello world")

在QString实现的背后,qstring类型其实等价于char*,所以,理论上,我们可以使用标准C中的所有适用于char*的函数来操作qstring.但是适用于普通字符串的函数会破坏一些qstring的信息,所以qstring覆盖了基本的函数操作,参见后面会补充进来的API。

正在开发,修复一些问题和实现常用字符串操作函数。

关于Redis中的SDS和Python中的字符串类型,可以参考下面的两篇博客:

About

一个受Redis中的SDS和Python中的字符串对象洗脑的动态字符串库

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages