const unsigned char * to char *

时间:2010-04-05 02:12:02

标签: c++ string types char

所以,我现在有两种类型:

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会有所帮助,但它似乎没有什么区别。

2 个答案:

答案 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。