2013-04-12 99 views
5

Tôi hoàn toàn mới với C++ và tôi tạo ra chức năng này:C++ Lỗi: chuyển đổi không hợp lệ từ 'char' thành '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; 
} 

Nhưng nó trở lại sau error: invalid conversion from 'char' to 'const char*' [-fpermissive]. Bất cứ ai có thể giúp tôi hiểu điều này có nghĩa là gì?

+3

Chỉ khi bạn giúp tôi hiểu những gì 'dòng 23' phương tiện. – WhozCraig

+0

Nó có nghĩa là bạn không thể chuyển đổi từ char sang con trỏ char char. Trên dòng 23, bạn chuyển một char đến một cái gì đó mà mong đợi một con trỏ const char. – jalf

Trả lời

4
string compLetter = compWord[x]; 

compWord[x] được char và bạn đang cố gắng gán nó vào string, đó là sai. Tuy nhiên, mã của bạn nên có cái gì đó như

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

Nếu anh ta muốn sử dụng lớp chuỗi chỉ như thế nào về điều này: 'string compLetter = (char *) & compWord [x];' –

+0

@AbhijitKadam - Không, điều đó sẽ cho kết quả hoàn toàn khác. –

1

string compLetter = compWord[x];

nên

char compLetter = compWord[x];

1

On line này

string compLetter = compWord[x]; 

Bạn đang gán một char đến một chuỗi. Thay đổi nó thành

char compLetter = compWord[x]; 

Nên thực hiện thủ thuật.

0

compWord [x] cung cấp cho bạn ký tự x'th trong chuỗi compWord, mà sau đó bạn đang cố gán cho một chuỗi.

Bạn nên so sánh cả hai chuỗi trực tiếp hoặc lặp lại chúng song song và so sánh ký tự theo ký tự.

0

Bạn có thể sử dụng std::string::find để xem liệu một ký tự có nằm trong số string hay không. Nếu không, nó sẽ trả std::string::npos:

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

}

Các vấn đề liên quan