尝试static_cast<>时出错const char []到unsigned char *

时间:2017-05-10 14:12:17

标签: c++ arrays string casting

我想将const char[]投射到unsigned char *

我正在使用C ++强制转换(即:static_cast):

unsigned char * txt = static_cast<unsigned char *>("AC");

当我构建应用程序时,我收到以下错误:

  

错误:类型&#39; const char [3]&#39;中的static_cast无效输入&#39; unsigned char *&#39;

当我像演员一样使用C时:

unsigned char * txt = (unsigned char *)"AC";

我没有收到任何编译错误,程序运行完美。

我必须使用C ++强制转换来避免任何运行时错误。如何使用C ++强制转换将const char [3]强制转换为unsigned char *

1 个答案:

答案 0 :(得分:4)

const char[]static_cast<>是不相关的类型,因此const_cast<>无法正常工作。而且常量是不同的,因此需要unsigned char* txt = reinterpret_cast<unsigned char*>(const_cast<char*>("AC"));

正确演员:

unsigned char* txt

请注意,您无法通过{{1}}指针进行写操作,因为C ++字符串文字(&#34; AC&#34;此处)是不可变的,并且通常存储在只读内存中。

请参阅const_cast<>

  

通过非const访问路径修改const对象并通过非易失性glvalue引用volatile对象会导致未定义的行为。