Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 尝试静态_cast时出错<&燃气轮机;常量字符[]到无符号字符*_C++_Arrays_String_Casting - Fatal编程技术网

C++ 尝试静态_cast时出错<&燃气轮机;常量字符[]到无符号字符*

C++ 尝试静态_cast时出错<&燃气轮机;常量字符[]到无符号字符*,c++,arrays,string,casting,C++,Arrays,String,Casting,我想将常量字符[]转换为无符号字符* 我使用C++的case:(I: StistaCase< /COD>): 我没有得到任何编译错误,程序运行良好 我必须使用C++强制转换来避免运行时错误。我如何将 const char(3)< /C> >使用C++强制转换> < /p> < p> 未签名CHAR*< /C> >和 const char []/Case>是无关的类型,从而代码> StistaCase< /Cord>将不起作用。并且常数不同,因此需要const\u cast 正确的演员阵容: un

我想将
常量字符[]
转换为
无符号字符*

我使用C++的case:(I:<代码> StistaCase< /COD>):

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


<>我必须使用C++强制转换来避免运行时错误。我如何将<代码> const char(3)< /C> >使用C++强制转换> < /p> < p> <代码>未签名CHAR*< /C> >和<代码> const char []/Case>是无关的类型,从而<>代码> StistaCase< /Cord>将不起作用。并且常数不同,因此需要
const\u cast

正确的演员阵容:

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

请注意,不能通过该<代码>未签名CHAR*TXT< /COD>指针写入,因为C++字符串文字(“AC”)是不可变的,通常存储在只读存储器中。p> 见:

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


unsigned char*
const char[]
是不相关的类型,因此
static\u cast
无法工作。并且常数不同,因此需要
const\u cast

正确的演员阵容:

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

请注意,不能通过该<代码>未签名CHAR*TXT< /COD>指针写入,因为C++字符串文字(“AC”)是不可变的,通常存储在只读存储器中。p> 见:

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


为什么要强制转换为非常量?即使在C中,从
const char*
强制转换为
char*
最终也会导致未定义的行为。避免这样做。“我必须使用C++强制转换来避免任何运行时错误”——例如,为什么你想从“代码> const char */COD>强制转换为<代码> char */COD>?即使在C中最终也会导致未定义的行为。避免这样做。“我必须使用C++强制转换来避免任何运行时错误”。例如,我只使用<代码> TXT < /C>比较,所以我不需要修改它。谢谢@LayayasMaWy…但是注意,一旦你使用了“代码> RealTytCase和 CistasCase你的前提“必须使用C++强制转换来避免任何运行时错误”不再成立,并且关于安全性,你也可以使用C风格的CAST。不过,我还是会使用C++的转换,因为它清楚地表达了你在代码中的意图,它是一种:“我自找麻烦,但我知道我在这里做什么”@ LoayAshmawy。如果你要用它来进行比较,就没有必要(也没有理由)剥离稳定性。到
txt
应该是
无符号字符*
常量无符号字符*
?@LoayAshmawy
无符号字符常量*txt=重新解释强制转换(“AC”)
我只使用
txt
进行比较,所以我不需要修改它。谢谢@LayayasMaWy…但是注意,一旦你使用了“代码> RealTytCase和 CistasCase你的前提“必须使用C++强制转换来避免任何运行时错误”不再成立,并且关于安全性,你也可以使用C风格的CAST。不过,我还是会使用C++的转换,因为它清楚地表达了你在代码中的意图,它是一种:“我自找麻烦,但我知道我在这里做什么”@ LoayAshmawy。如果你要用它来进行比较,就没有必要(也没有理由)剥离稳定性。到
txt
应该是
无符号字符*
常量无符号字符*
?@LoayAshmawy
无符号字符常量*txt=重新解释强制转换(“AC”)
unsigned char* txt = reinterpret_cast<unsigned char*>(const_cast<char*>("AC"));