2014-11-08 128 views
1

我有這個代碼的問題:從'char'到'const char *'的C++無效轉換[-fpermissive] |

void keylist(char key) 
{ 
    //check if the user presses a key 
    if(GetAsyncKeyState(key)) 
    { 
     string skey = key; 
     buffer.append(skey); 
     counter++; 

    } 
} 

每次我嘗試運行它給我這個錯誤的程序: 代碼塊項目\ CB32KLG \ main.cpp中| 66 |錯誤:從「字符」無效的轉換到'const char *'[-fpermissive] |

回答

6

這是因爲這

string skey = key; 

有沒有在字符串中沒有重載構造函數只需要字符作爲其input.See下面的完整列表: -

string(); 
string (const string& str); 
string (const string& str, size_t pos, size_t len = npos); 
string (const char* s); 
string (const char* s, size_t n); 
string (size_t n, char c); 
template <class InputIterator> 
    string (InputIterator first, InputIterator last); 

要解決,你可以使用: -

string skey(1, key); 
+1

又該做些什麼來解決我的代碼? xD – 2014-11-08 10:48:26

+0

請看我更新的答案 – ravi 2014-11-08 10:49:56

3
string skey = key; 

string中只有char沒有可行的轉換構造函數。
初始化這樣的:

string skey{key}; 

或者這樣:

string skey(1, key); 
+0

Anoter(有點令人驚訝)選項是使用'string skey; skey = key;'。初始化是不允許的,但賦值是(並且是字符整數,它也意味着這是完全合法的'std :: string s; s = 3.14;') – 6502 2014-11-08 10:54:22

相關問題