C++ 空终止字符串:使用'\0';还是仅仅0?
如果我需要空终止字符串,我应该使用C++ 空终止字符串:使用'\0';还是仅仅0?,c++,c,null-terminated,C++,C,Null Terminated,如果我需要空终止字符串,我应该使用\0还是简单的0就足够了 使用它们之间有什么区别吗 char a[5]; a[0] = 0; 及 或者\0只是为了明确我在这里终止为null,但对于编译器来说是一样的?'\0'与0完全相同,尽管类型不同'\0'只是一个charliteral的表示形式。类型char可以从普通int文本初始化 因此,实际上不可能知道什么更好,只要记住在代码中始终使用它。这是一样的。看看ascii表 从我的观点来看,最好使用“\0”,因为您可以明确地说字符串的结尾 当您读取代码时,
\0
还是简单的0
就足够了
使用它们之间有什么区别吗
char a[5];
a[0] = 0;
及
或者
\0
只是为了明确我在这里终止为null,但对于编译器来说是一样的?'\0'
与0
完全相同,尽管类型不同<代码>'\0'只是一个char
literal的表示形式。类型char
可以从普通int
文本初始化
因此,实际上不可能知道什么更好,只要记住在代码中始终使用它。这是一样的。看看ascii表 从我的观点来看,最好使用“\0”,因为您可以明确地说字符串的结尾 当您读取代码时,这会有所帮助(例如,指针使用NULL而不是0)。'\0'是值为0的。所以他们之间没有区别
旁注:如果处理字符串,则应使用。两者将生成相同的机器代码,因为
0
将转换为字符值0
,而'\0'
只是编写字符值0
的另一种方式。后者显然是一个字符,因此它将表明您并不是无意中想写'0'
,但除此之外,它最终是完全相同的
使用“\0”还是仅使用0
价值上没有差别。在C语言中,类型没有区别:两者都是
int
在C++中,它们有不同的类型:<代码> char < />代码> <代码> int >代码>。因此边缘转到
'\0'
,因为不涉及类型转换
不同的样式指南相互促进<为清晰起见,代码>'\0'<代码>0以避免混乱
正确答案:使用基于团队编码标准/准则的样式。如果您的团队没有这样的指南,请制定一个。最好使用一种,而不是使用不同的样式。 C++,只使用<代码> STD::String < /C> >忘记C字符串。“看ASCII表。”EBCDIC字符表怎么样?细节:在C中,
'\0'
更恰当地称为字符常量。只有C指定的文字是字符串文字和复合文字。注意:在C中,像'\0'
这样的字符常量属于int
类型,而不是char
。注意:在C中,像'\0'
这样的字符常量属于int
类型,而不是char
。
char a[5];
a[0] = '\0';