我正在尝试将一个庞大的项目从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) == 0asmcmd.is_empty()的复杂方法。

08-16 12:56