2015-12-22 30 views
-3
char messaggiou[100];  
char *name2; 
string encoded; 

     name2 = (char*)malloc(encoded.length() + 1); 
     strcpy(name2, messaggiou);          
     strcpy(encoded.c_str(), name2);   
     const char* hex_str = name2; 

我在C++中使用vs2015時出現此代碼(簡化)的錯誤。無法將常量字符轉換爲字符

error C2664: `'char *strcpy(char *,const char *)': cannot convert argument 1 from 'const char *' to 'char *' 

詩在messaggiou有十六進制的加密字符串

+0

它看起來像你試圖將'name2'複製到'encoded'。由於'encoded'是一個字符串,你可以使用'='運算符,它會正確地爲你複製數據。 http://en.cppreference.com/w/cpp/string/basic_string/operator%3D –

+1

爲什麼在C++中使用'malloc'和'strcpy'? – Kevin

+0

您誤解了錯誤。你可以將'const char'轉換爲'char'。你不能將'const char *'轉換爲'char *'。 –

回答

4

如果使用C++,我會做這在你的地方:

std::string messaggiou;  
std::string name2; 
std::string encoded; 

name2 = messaggiou;          
encoded = name2;   
const char* hex_str = name2.c_str(); 

爲什麼複雜的事情,如果它可以更容易,謝謝到C++ :-)

你也可以強制任何constconst_cast<char*>(const object),但爲什麼如果你不需要...