【发布时间】:2017-08-05 00:13:09
【问题描述】:
我想利用这篇文章更详细地了解无符号和有符号指针是如何工作的。我遇到的问题是我必须使用 opengl 中的一个名为 glutBitmapString 的函数,该函数将 void* 和 const unsigned char*. 作为参数,我正在尝试将字符串转换为 const unsigned c_string。
尝试:
string var = "foo";
glutBitmapString(font, var.c_str());
但是,这并不安静,因为新生成的 c_str 已签名。我想远离铸造,因为我认为这会导致缩小错误。我认为 unsigned char 和 signed char 几乎是同一件事,但两者都做了不同的映射。想到使用 reinterpret_cast,但我不知道它是如何工作的。
【问题讨论】:
-
reinterpret_cast 被认为是危险的。那是我想远离它。在这种情况下,reinterpret_cast 是合理的,因为我必须转换一个指针,但我不知道我是否会得到相同的结果。
-
@user4581301 简短回答:几乎从不。开玩笑。半开玩笑。
-
reinterpret_cast, @Ron?同意。只有在绝对不可避免的情况下。吸盘是上帝的锤子。它将使圆圈适合方孔,并且程序可能会因此行为不端。为此,有点取决于。 ASCII 仅定义为 127,因此有符号和无符号无关紧要。如果您有扩展的 ASCII 码,则存在解释错误的余地。