首先明确,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中的,别搞混了。