2013-04-12 115 views
5

转换无效我完全新的C++和我创造了这个功能:C++错误:从 '字符' 到 '为const char *'

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行,你将一个char传给了一个需要const char指针的东西。 – jalf

回答

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

如果他想要使用字符串类,只需要如下:'string compLetter =(char *)&compWord [x];' –

+0

@AbhijitKadam - 不,这会给出完全不同的结果。 –

1

string compLetter = compWord[x];

应该

char compLetter = compWord[x];

1

在此行中

string compLetter = compWord[x]; 

你分配一个char到串。 将其更改为

char compLetter = compWord[x]; 

应该做的伎俩。

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; 

}

相关问题