简体   繁体   中英

C++ Error: Invalid conversion from 'char' to 'const char*'

I'm completely new to C++ and I created this function:

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;
}

But it returns to following error: invalid conversion from 'char' to 'const char*' [-fpermissive] . Can anyone help me understand what this means?

string compLetter = compWord[x];

compWord[x] gets char and you are trying to assign it to string , that's wrong. However, your code should be something like

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;
}

string compLetter = compWord[x];

应该

char compLetter = compWord[x];

On this line

string compLetter = compWord[x];

You're assigning a char to a string. Changing it to

char compLetter = compWord[x];

Should do the trick.

compWord[x] gives you the x'th character in string compWord, which you are then trying to assign to a string.

You should either compare both strings directly, or iterate over them in parallel and compare character by character.

You can use std::string::find to see whether a character is in the string . If it's not, it returns std::string::npos :

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

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM