c++ 中“”和NULL的注意事项

来源:互联网 发布:西昊电脑椅 知乎 编辑:程序博客网 时间:2024/06/08 02:50

首先明确,NULL在c++中只可以用来表示空指针,这一点和java不同!类似于std::string str = NULL 的代码都是错误的,可以编译通过但会在运行时出现runtime error。

char* s1 = NULL;//①
char* s2 = ""; //②

上述代码中:
①声明字符串指针s1并让它为空地址(即0)
②声明字符串指针s2并让它指向空字符串(含结尾处的\0)
检测方法:
char* str = “”:
1. if(strlen(str) == 0)
2. if(strcmp(str, “”))

char* str = NULL:
if(str == NULL)

注意:先判断是否为NULL,在判断是否“”。因为类似于strlen(NULL)和strcmp(str,NULL)的代码都是会引发段错误的。

By the way,“”和“\0”是不相等的,虽然strlen(“”)和strlen(“\0”)均为0。这也体现了strlen是以\0作为结束标志,但不将\0字符算入。


附带判断string 是否为“”的方法:
string str = “”;
1. if(str == “”)
2. if(str.empty())
3. if(str.length() == 0) 或 if(str.size() == 0)
!!c++中没有str.equals()和string.Empty,都是java中的,别搞混了。