我想打印一个动态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);
答案 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"
,因为那样您就可以比较相同的类型