我正在尝试将一个庞大的项目从C++转换为Delphi,并正在完成翻译。我剩下的一件事是“\0”怪物。
if (*asmcmd=='\0' || *asmcmd==';')
其中asmcmd是char *。
我知道\0标记了C++中数组类型的结尾,但是我需要将其作为字节知道。是0吗?
换句话说,下面的代码是否等效于C++行?
if(asmcmd^=0) or (asmcmd^=';') then ...
其中asmcmd是PAnsiChar。
您不需要知道Delphi就能回答我的问题,而是告诉我\0为字节。那也可以。 :)
最佳答案
'\0'
等于0
。这是C语言的遗物,它根本没有任何字符串类型,而是使用char数组。空字符用于标记字符串的结尾;回想起来,这不是一个明智的决定-大多数其他字符串实现在某处使用专用计数器变量,这使得找到字符串O(1)的末尾而不是C的O(n)。*asmcmd=='\0'
只是一种以假设语言检查length(asmcmd) == 0
或asmcmd.is_empty()
的复杂方法。