我已经使用了几种动态类型语言而且我一直在避免使用C但足够了,它有时候是工作的正确工具,我需要克服它.
我想念C的东西是关联数组和大型字符串库.是否有一个库提供了更多的选项,然后string.h?在使用字符串进行转换时有任何一般性建议吗?
感谢阅读 - 帕特里克
您可以查看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程序中的字符串操作.
POSIX 为您提供<string.h>,<strings.h>和<regex.h>. 如果您确实需要比这更多的字符串库,那么 C 可能不是适合该特定工作的工具。
至于哈希表,如果没有大量令人讨厌的宏,你就无法在 C 中获得类型安全的哈希表。如果您可以只存储void指针,或者为每种类型的地图进行一些手动工作,那么您不应该缺乏选择。编写自己的哈希表非常困难 - 只需在 Stackoverflow 中搜索有关哈希函数的帮助即可。如果您不想自己开发,strmap[LGPL] 看起来不错。