我想将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 *
?
答案 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对象会导致未定义的行为。