qwe*_*101 6 c++ delphi translation operators
我正在尝试将一个巨大的项目从C++翻译成Delphi,我正在完成翻译.我留下的一件事是'\ 0'怪物.
if (*asmcmd=='\0' || *asmcmd==';')
Run Code Online (Sandbox Code Playgroud)
其中asmcmd是char*.
我知道\ 0标志着C++中数组类型的结束,但我需要知道它是一个字节.是0吗?
换句话说,下面的代码是否等同于C++行?
if(asmcmd^=0) or (asmcmd^=';') then ...
Run Code Online (Sandbox Code Playgroud)
其中asmcmd是PAnsiChar.
你不需要知道Delphi来回答我的问题,但是告诉我\ 0为字节.那也行.:)
tda*_*ers 13
'\0'等于0.它是C的遗物,它根本没有任何字符串类型,而是使用char数组.空字符用于标记字符串的结尾; 回想起来,这不是一个非常明智的决定 - 大多数其他字符串实现在某处使用专用计数器变量,这使得查找字符串O(1)的结尾而不是C的O(n).
*asmcmd=='\0'只是一种复杂的检查方式length(asmcmd) == 0或asmcmd.is_empty()假设的语言.
这是 charnull或charvalue 0。它用在字符串的末尾。
严格地说,它是八进制值为零的字符的转义序列(当然在任何基数中也为零).
虽然您可以使用前缀为零的任何数字来指定八进制字符代码(例如'\040',ASCII编码中的空格字符),但您很少有理由这样做.'\ 0'是用于指定NUL字符的惯用语法(因为您不能从键盘输入这样的字符或在编辑器中显示它).
您可以同样指定'\ x0',这是一个以十六进制表示的NUL字符.
NUL字符在C和C++中用于终止存储在字符数组中的字符串.此表示形式用于文字字符串常量,并按惯例用于由<cstring>/ <string.h>库操作的字符串.在C++中,可以使用std :: string类.
请注意,在C++中,字符常量如'\0'或'a'具有类型char.在C中,由于可能不明原因,它有类型int.
| 归档时间: |
|
| 查看次数: |
13287 次 |
| 最近记录: |