像"扩展"的C字符串库?

Pat*_*ick 13 c string

我已经使用了几种动态类型语言而且我一直在避免使用C但足够了,它有时候是工作的正确工具,我需要克服它.

我想念C的东西是关联数组和大型字符串库.是否有一个库提供了更多的选项,然后string.h?在使用字符串进行转换时有任何一般性建议吗?

感谢阅读 - 帕特里克

Syl*_*sne 8

您可以查看Better String Library.网站上的描述:

Better String Library是字符串数据类型的抽象,它优于C库char缓冲区字符串类型,或C++的std :: string.实现的功能包括:

  • 大量缓解由于错误使用公共C字符串库函数而导致的缓冲区溢出/溢出问题和其他故障
  • 显着简化了字符串操作
  • 与其他源/库的高性能互操作性,期望'\ 0'终止char缓冲区
  • 改进了常见字符串操作的整体性能
  • 与其他更现代的语言功能相当

该库完全独立,可移植(已知与gcc/g ++,MSVC++,英特尔C++,WATCOM C/C++,Turbo C,Borland C++,IBM在Windows,Linux和Mac OS X上的原生CC编译器),高性能,易于使用,不属于其他一些数据结构集合.甚至文件I/O函数也是完全抽象的(因此可以使用其他类似流的机制,比如套接字.)然而,它足以作为C字符串库的完全替代,用于任何C程序中的字符串操作.


gnu*_*nud 5

POSIX 为您提供<string.h>,<strings.h><regex.h>. 如果您确实需要比这更多的字符串库,那么 C 可能不是适合该特定工作的工具。

至于哈希表,如果没有大量令人讨厌的宏,你就无法在 C 中获得类型安全的哈希表。如果您可以只存储void指针,或者为每种类型的地图进行一些手动工作,那么您不应该缺乏选择。编写自己的哈希表非常困难 - 只需在 Stackoverflow 中搜索有关哈希函数的帮助即可。如果您不想自己开发,strmap[LGPL] 看起来不错。


Mat*_*lia 2

GLib提供了许多预制的数据结构和字符串处理函数,但它是一组与“通常”的函数和类型完全分离的函数和类型,并且它不是一个非常轻量级的依赖项。

如果 C++ 是您任务的可行替代方案,它会将一个字符串类和几个现成的通用容器捆绑到标准库中(并且可以在 Boost 中找到许多其他相关内容)。