为什么我不能将char与“*”进行比较?
为什么我不能比较UserInput[i]
到"*"
?编译器说“ISO C++禁止指针和整数之间的比较”。整数在哪里?我在该行看到的唯一一个是i
,它用于定位特定字符。为什么我不能将char与“*”进行比较?
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
int main(){
char UserInput[4] = "2*3";
for (int i=0; i< strlen(UserInput); i++){
if(UserInput[i] == "*"){
cout<<"There is multiplication Involved \n";
}
}
return 0;
}
if(UserInput[i] == "*")
会发出,因为的警告 “”
"*"
是不是char。 "*"
是const char*
。指针和整数(int
和const char *
)之间
比较是不可能的
改变它
if(UserInput[i] == '*')
在哪里整数?
您的条件表达式为UserInput[i] == "*"
。
在表达式UserInput[i]
是char
类型。在许多二元操作中,char
在执行操作之前被提升为int
。就编译器而言,它将int
与"*"
进行比较,该类型的类型为const char[2]
,但会衰减到表达式中的指针。
您需要做的是将char
与字符常量'*'
进行比较。使用
if(UserInput[i] == '*') {
这有点棘手。
全部内部“”是一个字符串 - 字符数组。 c/C++中的数组是指向数组的第一个元素的指针。
字符串的每个单独元素都是char,它被转换为int。
最后,编译器说这是不可能比较这两个项目。 你需要做的是这样的:
if(UserInput[i] == '*')
在这种情况下,你比较两个字符没有问题。
PS如果要确定是否存在另一个字符串中的一个字符串,应该使用strstr()
。
为什么这个strncpy(pch,“sample”,6);示例是必需的? –
此外,使用std::string
代替字符数组
#include <iostream>
#include <string>
using namespace std;
int main() {
string UserInput = "2*3";
for (int i = 0; i < UserInput.length(); i++) {
if (UserInput[i] == '*') {
cout << "There is multiplication Involved \n";
}
}
return 0;
}
的不要使用C风格的字符串。 'std :: string'是你的朋友。 –
这个缩进只是......令人讨厌的。 –