处理长度为C的字符串

hun*_*ark 0 c string string-length

在C(不是C++)中,我们可以考虑几种处理字符串长度的方法:

  • 只需依赖null终止符(\0):我们假设该字符串不包含\0.将字符串存储到char数组并\0在末尾追加.使用strlen()我们需要它的大小时的功能.

  • 将字符和长度存储到struct:

    typedef struct _String { char* data; int size; } String;

  • 使用另一个变量来存储长度:例如,

    char name[] = "hello"; int name_size = 5; some_func(name, name_size, ...);

就个人而言,我更喜欢使用第二种方法

  • 它可以覆盖一些包含\0在中间的"怪异"字符串.

  • 我们可以实现一些功能,如string_new(),string_del(),string_getitem(),等写一些"OOP般"的代码.

  • 我们没有两个(或更多)变量来处理字符串及其长度.

我的问题是:在C中处理字符串最常用的方法是什么?(特别是:当我们必须使用很多字符串时(例如编写一个解释器))

谢谢.

Lun*_*din 5

在C中处理字符串最常用的方法是什么?

毫无疑问,目前最常见的方法是简单地依赖空终止.

这是"最好的"方式吗?可能不是.就执行速度和程序设计而言,使用自定义字符串库可能是"最佳"方式.缺点是您必须拖动该库,因为C没有标准甚至事实上的标准字符串库.