2013-04-12 5 views
5

에 '문자'에서 잘못된 변환이 나는 C에 완전히 새로운 해요 ++ 나는이 기능을 만들어 :C++ 오류 : 'const를 숯불 *'

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 행에서 const char 포인터를 기대하는 것으로 char을 전달합니다. – jalf

답변

4
string compLetter = compWord[x]; 

compWord[x]char 얻고 당신이 string에 할당하려고하는, 그 잘못이다. 그러나 코드가이 라인에

char compLetter = compWord[x];

+0

만약 문자열 클래스를 사용하고 싶다면'string compLetter = (char *) & compWord [x]; ' –

+0

@AbhijitKadam - 전혀 다른 결과를 줄 것입니다. –

1

string compLetter = compWord[x];

과 같이해야한다

string compLetter = compWord[x]; 

당신은에 문자를 할당하고 끈.

char compLetter = compWord[x]; 

로 변경하면 트릭을해야한다.

1

해야

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

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; 

}