所以,我现在有两种类型:
const unsigned char* unencrypted_data_char;
string unencrypted_data;
我正在尝试执行从一个到另一个的简单数据转换(字符串 - > const unsigned char *)
结果,我有以下内容:
strcpy((unencrypted_data_char),(unencrypted_data.c_str()));
但是,我收到错误:
error C2664: 'strcpy' : cannot convert parameter 1 from 'const unsigned char *' to 'char *'
有什么建议吗?我认为使用reinterpret_cast会有所帮助,但它似乎没有什么区别。
答案 0 :(得分:9)
你不能写一个const char *,因为每个char指向的是 const 。
strcpy 将写入第一个参数。因此错误。
如果您打算写一个unencrypted_data_char
const,请不要这样做(并确保为它分配了足够的空间!)
谨防strcpy的局限性。确保你知道你的缓冲区需要提前多大,因为 strcpy不会停止,直到它变得足够:)
答案 1 :(得分:0)
如果unencrypted_data_char指向一个只能读取的内存,你最好不要在其上写任何数据,它肯定会导致段错误。
e.g:
const char *a="abc";
指向可读的内存
如果unncrypted_data_char只是const,因为你允许它(比如const char * a = b),你可以使用const_cast< char *>(a)转换它。
如果从const char *转换为unsigned char *。
1.您需要从const char *转换为char * .use const_cast。
2.conver从char *到unsigned char *。使用reinterpret_cast。