回想一下在大學畢業後的幾年時間裏,用C++進行遊戲時,在查找如何以C++字節讀取文件時,我遇到的一些信息是,沒有任何神奇的「readAsbytes」函數,你本質上應該通過讀取文件來完成這一點,就像文本文件一樣,但是確保存儲結果爲char*
。例如:以字節讀取文件並將其存儲到一個確定性的8位值數組中
someIFStream.read(someCharPointer, sizeOfSomeCharPointer);
話雖這麼說,即使在chars
C++通常被認爲是對周圍8位,這是不完全保障。開始討論不同的平臺和文本編碼足夠長的時間,如果你想要一個真正的字節數組,你會遇到問題。
您可以使用uint8_t*
並從char*
複製所有內容。 。 。但是,這太浪費了。爲什麼我們不能在第一時間把所有東西都寫入uint8_t*
,而我們仍然在讀取文件,而不必擔心它是32位機器還是64位機器,或者UTF-8或UTF-16或你有什麼?
所以問題是:這是可能的,至少在更現代的C++版本?如果是這樣,怎麼樣?我不想從char*
變爲uint8_t*
的原因基本上是不需要浪費一些CPU週期在一些50,000迭代for
循環上。謝謝!
編輯
我定義一個字節爲這一問題的目的,8位,除非有人強烈暗示,否則。我的理解是,字節最初是6位,然後變成7,然後最終定位在8位,但是32位組合等通常被認爲是小字節集合。如果我錯了,或者我應該以不同的方式思考這個問題(無論哪種方式),請將它提出來。
可能重複[字符保證是正好8位長?](http://stackoverflow.com/questions/881894/is-char-guaranteed-to-be-exactly-8-bit-long) – jww 2014-09-20 02:34:10
@jww不,我已經看到了這個問題及其被接受的答案,基本上說他們偶爾會更長。既然這意味着你不能真正依靠'chars'來獲得8位,你必須找到另一種數據類型。這是導致我問這個問題的一部分。 – Panzercrisis 2014-09-20 02:37:25
「開始討論不同的平臺和文本編碼足夠長的時間,如果你想要一個真正的字節數組,你將遇到問題。」在什麼平臺的C + +類型char不是8位? – thang 2014-09-20 02:58:46