8

私は 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]。これが何を意味するのか理解できる人はいますか?

4

5 に答える 5

4
string compLetter = compWord[x];

compWord[x]getscharに割り当てようとしてstringいるのは間違いです。ただし、コードは次のようにする必要があります

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;
}
于 2013-04-12T10:44:38.280 に答える
1

string compLetter = compWord[x];

する必要があります

char compLetter = compWord[x];

于 2013-04-12T10:45:15.083 に答える
1

この行で

string compLetter = compWord[x];

char を文字列に割り当てています。それをに変更する

char compLetter = compWord[x];

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

于 2013-04-12T10:45:57.083 に答える
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;

}

于 2013-04-12T11:21:53.877 に答える
0

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

両方の文字列を直接比較するか、それらを並行して反復処理して文字ごとに比較する必要があります。

于 2013-04-12T10:50:21.947 に答える