gpt4 book ai didi

c++ - std::byte 的目的是什么?

转载 作者:IT老高 更新时间:2023-10-28 21:36:29 24 4
gpt4 key购买 nike

既然 c++17 有 std::byte,我一直在寻找一种方法,将读取文件的代码转换为 char 的代码,将文件读取到 字节。文件包含字节,而不是一堆整数。

然后我读到 this questionthis other question人们认为将文件读入 byte 是错误的,而将文件读入 char 是正确的。

如果 byte 不是为访问内存而设计的,以此类推,文件,那么它的目的是什么?正如其他两个问题中所引用的那样:

Like char and unsigned char, it can be used to access raw memory occupied by other objects (object representation), but unlike those types, it is not a character type and is not an arithmetic type. A byte is only a collection of bits, and only bitwise logic operators are defined for it.

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

最佳答案

你可能误解了一些事情。

byte 非常适合“访问内存”。当存储只是字节序列而不是字符数组时,您打算使用该类型。

Iostream 类型不能用 byte 专门化,因为它们是围绕字符设计的,作为它们的接口(interface)。也就是说,他们不认为文件是字节序列。他们认为它们是字符序列。现在,您当然可以通过使用一两次强制转换直接读入 byte 数组。但这不是 iostream 原生的想法。

您必须区分 iostream 的工作方式和 文件 的工作方式。毕竟,iostream 只是一个文件 IO 库;它几乎不是文件 API 的全部。

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

也就是说,你应该认为这不是std::byte的问题,而是iostream的问题。只是其中的一个。

关于c++ - std::byte 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47481231/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com