STD :: BYTE的目的是什么

What is the purpose of std::byte?

本文关键字:是什么 BYTE STD      更新时间:2023-10-16

现在C 17具有std::byte,我正在寻找一种将读取文件读取char的代码转换为将文件读取byte中的代码的方法。文件包含字节,而不是一堆整数。

然后,我阅读了这个问题和另一个问题,人们认为将文件读取为byte是错误的,并且将文件读取为char是正确的。

如果byte不是为了访问内存而设计的,并且通过类似的文件,那么它的目的是什么?,如其他两个问题所述:

像char和unsigned char一样,可用于访问原始内存 由其他对象(对象表示)占有,但与那些 类型,它不是字符类型,也不是算术类型。A 字节只是一个位,只有位逻辑运算符 为此定义。

这听起来像是应用于读取文件而不是字符的确切类型。

您可能正在误解事物。

byte非常旨在"访问内存"。当存储只是一个字节序列而不是字符数组时,您打算使用该类型。

iostream类型不能专门使用byte,因为它们围绕字符作为界面而设计。也就是说,他们不会将文件视为字节序列;他们认为它们是角色的序列。现在,您当然可以使用一两个铸件直接读取byte数组。但这不是iostream本地思考的方式。

您必须区分iostream的工作方式和 files 的工作方式。毕竟,iostream只是一个文件io库。它几乎不是文件apis的最终,

大多数用于读取二进制数据的文件API采用void*而不是字符数组。 std::fread/fwrite,等等。

也就是说,您应该考虑到这一点,不是std::byte的问题,而是 iostream 的问题。只是其中的一条线。