我想利用此文章更详细地了解如何对指针进行无符号和有符号的工作。我遇到的问题是,我必须使用opengl中的函数glutBitmapString
,其参数为void*
,而const无符号的char*.
我试图将字符串转换为常量无符号的c_string
。如何将常量字符*转换为常量无符号字符*
尝试:
string var = "foo";
glutBitmapString(font, var.c_str());
但是,由于新产生的c_str
签订不安静的权利。我想远离铸造,因为我认为这会导致缩小误差。我认为unsigned char和signed char是几乎相同的东西,但都做了不同的映射。想到使用reinterpret_cast,但我不知道它是如何工作的。
不错的阅读:[何时应该使用static_cast,dynamic_cast,const_cast和reinterpret_cast?](https://stackoverflow.com/questions/332030/when-should-static-cast-dynamic-cast-const-cast-and -reinterpre-cast-be-used) – user4581301
reinterpret_cast已知是危险的。这是我想远离它。在这种情况下,reinterpret_cast是合理的,因为我必须投射一个指针,但是我不知道是否会得到相同的结果。 – TheMathNoob
@ user4581301简短的回答:几乎从不。开玩笑。半开玩笑。 – Ron