[英]What is the purpose of std::byte?
既然c ++ 17有std::byte
,我一直在尋找一種方法,將讀取文件的代碼轉換為char
,將代碼轉換為將文件讀入byte
代碼。 一個文件包含字節,而不是一堆整數。
然后我讀了這個問題和另一個問題 ,人們認為將文件讀入byte
是錯誤的,並且將文件讀入char
是正確的。
如果byte
不是為訪問內存而設計的,並且通過類比,文件,那么它的目的是什么? 正如其他兩個問題所引述:
與char和unsigned char一樣,它可以用於訪問其他對象占用的原始內存(對象表示),但與這些類型不同,它不是字符類型,也不是算術類型。 字節只是一個位集合,只為它定義了按位邏輯運算符。
這聽起來像應該用於讀取文件的確切類型,而不是字符。
你可能誤解了一些事情。
byte
非常適合“訪問內存”。 當存儲只是一個字節序列而不是字符數組時,您打算使用該類型。
Iostream類型不能專門用於byte
,因為它們是圍繞字符設計的。 也就是說,他們不會將文件視為字節序列; 他們認為它們是人物的序列。 現在,您當然可以使用一個或兩個強制轉換直接讀取byte
數組。 但這不是iostream原生思考的方式。
您必須區分iostream的工作方式和文件的工作方式。 畢竟Iostream只是一個文件IO庫; 它幾乎不是最終的全部文件API。
用於讀取二進制數據的大多數文件API都采用void*
而不是字符數組。 std::fread/fwrite
,等等。
也就是說,你應該想到這一點,不是std::byte
的問題,而是iostream的一個問題。 在他們的長隊中只是另一個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.