空字符串在C++中包含什么

What does empty string contain in C++

本文关键字:包含 什么 C++ 字符串      更新时间:2023-10-16

以下代码

#include <stdio.h>
int main( int argc, char** argv ) 
{
    const char *s = "";
    if (s == '') {
        int x = 0;
    }
    return 0;
}

它不会进入循环。为什么?,

您已将s定义为指向字符的指针。碰巧的是,''是一个整数常量表达式,值为 0 -- 空指针常量的定义。

IOW,你正在做相当于if (s == NULL).由于s实际上指向字符串文本,因此它不是空指针,因此比较是错误的。

我猜你的意图是if (*s == '') ...,这应该比较为真实。

尝试

   if (*s == '') {
        int x = 0;
    }

您要比较 s 的值,而不是它的内存地址。

s是一个

指针,这个版本比较指针

const char *s = null;
if (s == '') {
    int x = 0;
}
return 0;

此版本比较字符串的第一个元素以检测空字符串:

if (s[0] == '') {
   int x = 0;
 }