2017-08-24 18 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

代わりにchar配列のstd::stringを使用しています。 'std :: string'はあなたの友人です。 –

+1

このインデントはちょうど...厄介です。 –

答えて

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

ので "

"*"" のがcharではない警告を発行します。 "*"const char*です。

ポインタと整数の比較(intconst char *)が不可能である

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

どこに変化は整数でありますか?

条件式はUserInput[i] == "*"です。

UserInput[i]の式はcharです。多くのバイナリ操作では、操作が実行される前にcharintに昇格されます。コンパイラに関する限り、をと比較しています。これはタイプconst char[2]ですが、式の中のポインタに崩壊します。

charと文字定数'*'を比較する必要があります。使用

0

少し微妙です。
すべて""は、文字列の文字列です。 c/C++の配列は配列の最初の要素を指すポインタです。
stringの各要素はcharで、intに変換されます。
最後に、この2つの項目を比較することはできません。あなたは問題なく2つの文字を比較する。この場合

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

: あなたはこのように行う必要があります。

PS別の文字列に1つの文字列が存在するかどうかを判断する場合は、strstr()を使用してください。

+0

なぜこのstrncpy(pch、 "sample"、6);例が必要ですか? –

1

また、Cスタイルの文字列を使用しないでください

#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; 
} 
関連する問題