char指针比较错误

时间:2014-06-27 12:28:02

标签: c++ string pointers char

使用C ++ MFC和Visual Studio 2008。

抱歉新手问题,但我不确定为什么这不起作用。我正在创建一个函数,用于在char *中找到传递给它的XML的标准非法字符,但是我收到了一个奇怪的错误。

char* XMLIllegalCharacterParser(char *input){
    char *Temp;
    for (size_t i = 0; i < strlen(input); i++){
        if(input[i] == "\"" || input[i] == "\'" || input[i] == "&")
    }
    return Temp;
}

1>.\FileImport.cpp(868) : error C2446: '==' : no conversion from 'const char *' to 'int'

我不能为我的生活弄清楚它为什么不起作用。我有什么语法错误?

PS:我知道那里我只有3个角色。我收到了这个错误,我想在添加其他两个之前修复它。

这是我的后代码:

char* XMLIllegalCharacterParser(char *input){
char *Temp;
for (size_t i = 0; i < strlen(input); i++){
    switch(input[i]){
        case '\"':
            strcat_s(Temp, 6, "&quot;");
            break;
        case '\'':
            strcat_s(Temp, 6, "&apos;");
            break;
        case '&':
            strcat_s(Temp, 5, "&amp;");
            break;
        case '<':
            strcat_s(Temp, 4, "&lt;");
            break;
        case '>':
            strcat_s(Temp, 4, "&gt;");
            break;
        default:
            strcat_s(Temp, 1, (const char*)input[i]);
            break;
    }
}
return Temp;
}

2 个答案:

答案 0 :(得分:5)

你可能是指单引号而不是双引号:

input[i] == '"'
            ^ ^

其他情况也是如此。当您使用双引号时,如“&amp;”中所示,您将创建“字符串文字”。但input[i]是一个字符:您无法将字符串文字与字符进行比较。

更重要的是,即使input[i]也是一个字符串文字,这也不是比较C ++中c风格字符串的正确方法。

答案 1 :(得分:3)

您正在将char与字符串进行比较。改变这一行:

if (input[i] == '"' || input[i] == '\'' || input[i] == '&')