我想利用此文章更詳細地瞭解如何對指針進行無符號和有符號的工作。我遇到的問題是,我必須使用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