为什么我无法将UserInput[i]
与"*"
进行比较?编译器说“ISO c ++禁止指针和整数之间的比较”。整数在哪里?我在该行上看到的唯一一个是i
,用于定位特定字符。
#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;
}
答案 0 :(得分:5)
整数在哪里?
您的条件表达式为UserInput[i] == "*"
。
表达式UserInput[i]
的类型为char
。在许多二进制操作中,char
在执行操作之前被提升为int
。就编译器而言,它将int
与"*"
进行比较,const char[2]
类型为char
,但衰减到表达式中的指针。
您需要做的是将'*'
与字符常量if(UserInput[i] == '*') {
进行比较。使用
form-group
答案 1 :(得分:2)
if(UserInput[i] == "*")
因为“”
会发出警告
"*"
不是char。 "*"
是const char*
。
指针和整数(int
和const char *
)之间的比较是不可能的
将其更改为
if(UserInput[i] == '*')
答案 2 :(得分:1)
此外,使用std::string
代替char数组
#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;
}
答案 3 :(得分:0)
这有点棘手。
所有内容“ ”都是字符串 - 字符数组。 c / c ++中的数组是指向数组第一个元素的指针
string的每个元素都是char,它被转换为int
最后,编译器说不可能比较这两个项目。
你需要这样做:
if(UserInput[i] == '*')
在这种情况下,你可以比较两个字符没有问题。
PS 如果您想确定另一个字符串中是否存在一个字符串,则应使用strstr()
。