2017-08-24 72 views
1

爲什麼我不能比較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; 
} 
+4

的不要使用C風格的字符串。 'std :: string'是你的朋友。 –

+1

這個縮進只是......令人討厭的。 –

回答

2
if(UserInput[i] == "*") 

會發出,因爲的警告 「」

"*"是不是char。 "*"const char*。指針和整數(intconst char *)之間

比較是不可能的

改變它

if(UserInput[i] == '*') 
5

在哪裏整數?

您的條件表達式爲UserInput[i] == "*"

在表達式UserInput[i]char類型。在許多二元操作中,char在執行操作之前被提升爲int。就編譯器而言,它將int"*"進行比較,該類型的類型爲const char[2],但會衰減到表達式中的指針。

您需要做的是將char與字符常量'*'進行比較。使用

if(UserInput[i] == '*') { 
0

這有點棘手。
全部內部是一個字符串 - 字符數組。 c/C++中的數組是指向數組的第一個元素的指針。
字符串的每個單獨元素都是char,它被轉換爲int。
最後,編譯器說這是不可能比較這兩個項目。 你需要做的是這樣的:

if(UserInput[i] == '*') 

在這種情況下,你比較兩個字符沒有問題。

PS如果要確定是否存在另一個字符串中的一個字符串,應該使用strstr()

+0

爲什麼這個strncpy(pch,「sample」,6);示例是必需的? –

1

此外,使用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; 
} 
相關問題