【发布时间】:2014-06-27 20:46:29
【问题描述】:
使用 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, """);
break;
case '\'':
strcat_s(Temp, 6, "'");
break;
case '&':
strcat_s(Temp, 5, "&");
break;
case '<':
strcat_s(Temp, 4, "<");
break;
case '>':
strcat_s(Temp, 4, ">");
break;
default:
strcat_s(Temp, 1, (const char*)input[i]);
break;
}
}
return Temp;
}
【问题讨论】:
-
不修改时不要使用非常量
char *。这只是限制了人们如何调用你的函数(这是,imo,非常令人沮丧)。无论如何,您的if语句没有正文,因为这是 C++,请使用std::string。 -
另外,在进行单字符比较时,使用单引号
',如input[i] == '&' -
是的,我还没有包括正文。既然我已经解决了错误,我很快就会有一个合适的身体。
-
也许这会有所帮助:*.com/questions/20303100/…