尝试将常量字符 [] static_cast<>为无符号字符 * 时出错

Error when attempting to static_cast<> const char[] to unsigned char *

本文关键字:字符 出错 无符号 cast 常量 static      更新时间:2023-10-16

我想把const char[]投到unsigned char *

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

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

当我构建应用程序时,出现以下错误:

错误:从类型"常量字符 [3]"到类型"无符号字符 *"的无效static_cast

当我使用 C 类似强制转换时:

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

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

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

unsigned char*const char[]是不相关的类型,因此static_cast<>不起作用。而且恒常性是不同的,因此需要const_cast<>

正确的演员表:

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

请注意,您无法通过该unsigned char* txt指针进行写入,因为C++字符串文字(此处为"AC"(是不可变的,并且通常存储在只读内存中。

请参阅const_cast<>

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