将动态数组中的char与char比较

时间:2019-06-26 17:24:02

标签: c++ arrays dynamic types casting

我想打印一个动态char数组,该数组在实际结尾之前有\ 0个字符。 我通过对每个索引使用cout进行打印。

for (int i = 0; i < size; i++) {

        std::cout << content[i];
}

但是当我遇到一个\ 0字符时,我想检测它,因此我正在使用:

if (content[i] == 0) {
     std::cout "zero";
}

我试图做

if (content[i] == "\0") {
     std::cout "zero";
}

但是我无法进行比较,因为您显然无法比较const char*char

我做错了什么?我如何进行比较?

char数组顺次:

char * content = new char[size];
file.seekg(0);
file.read(content, size);

2 个答案:

答案 0 :(得分:4)

if (content[i] == "\0")

"\0"是字符串文字,在这种情况下为const char [2]decays指向一个指针,导致将const char *char进行比较,并导致编译器错误。

您想要

if (content[i] == '\0')

以获得null作为字符。就是说,整数可以与char进行比较,因此if (content[i] == 0)是有效的,但是(我认为)不如明确地使空字符清晰。

进一步阅读:Single quotes vs. double quotes in C or C++chris提供了链接)

答案 1 :(得分:-4)

在if语句中尝试"0",因为那样您就可以比较相同的类型