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]获取char并且您试图将其分配给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

compWord[x] 为您提供字符串 compWord 中的第 x 个字符,然后您尝试将其分配给字符串。

您应该直接比较两个字符串,或者并行迭代它们并逐个字符进行比较。

于 2013-04-12T10:50:21.947 回答
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 回答