2013-04-12 2 views
5

'のconstのchar *' に無効な変換です私はC++に完全に新たなんだと私は、この関数を作成:C++エラー:「シャアから

bool guessWord(string compWord) 
{ 
    cout << "Guess a letter: "; 
    string userLetter; 
    cin >> userLetter; 
    for (unsigned int x = 0; x < compWord.length(); x++) 
    { 
     string compLetter = compWord[x]; 
     if (compLetter == userLetter) 
     { 
      return true; 
     } 
    } 
    return false; 
} 

をしかし、それはerror: invalid conversion from 'char' to 'const char*' [-fpermissive]を次のように返します。誰でも私がこれが何を意味するのか理解するのを助けること

+3

あなたは私が何を 'ライン23'の手段を理解するのに役立つ場合のみ。 – WhozCraig

+0

これは、charからconst charポインタに変換できないことを意味します。 23行目では、const charポインタが必要なものにcharを渡します。 – jalf

答えて

4
string compLetter = compWord[x]; 

compWord[x]charを取得し、あなたはそれが間違っている、stringに割り当てるしようとしています。 しかし、あなたのコードは、この行で

char compLetter = compWord[x];

+0

文字列クラスを使いたい場合、 'string compLetter =(char *)&compWord [x];' –

+0

@AbhijitKadam - いいえ、全く異なる結果になります。 –

1

string compLetter = compWord[x];

のようなものでなければなりません

string compLetter = compWord[x]; 

あなたはに文字を割り当てています文字列。

に変更する
char compLetter = compWord[x]; 

このトリックを行う必要があります。

1

でなければなりません

bool guessWord(string compWord) 
{ 
    cout << "Guess a letter: "; 
    char userLetter; 
    cin >> userLetter; 
    for (unsigned int x = 0; x < compWord.length(); x++) 
    { 
     char compLetter = compWord[x]; 
     if (compLetter == userLetter) 
     { 
      return true; 
     } 
    } 
    return false; 
} 
0

compWord [x]は、文字列に割り当てようとしている文字列compWordのx番目の文字を返します。

両方の文字列を直接比較するか、パラレルで反復処理し、文字ごとに比較する必要があります。

0

std::string::findを使用すると、文字がstringにあるかどうかを確認できます。そうでない場合、それはstd::string::nposを返します。

bool guessLetter(string compWord) 
{ 
    cout << "Guess a letter: "; 
    char userLetter; 
    cin >> userLetter; 
    return compWord.find(userLetter) != string::npos; 

}

関連する問題