簡體   English   中英

std :: byte的目的是什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM