2013-04-12 66 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; 

}

相關問題