现在c++17有了std::byte,我正在寻找一种将读取文件的代码转换为读取字节的代码的方法。一个文件包含字节,而不是一堆整数。
然后我阅读了这个问题和这个问题,人们争论说将文件读入字节是错误的,而将文件读入字符是正确的。
如果byte不是为访问内存或类似文件而设计的,那么它的目的是什么呢?正如在另外两个问题中引用的那样:
像char和unsigned char一样,它可以用来访问其他对象占用的原始内存(对象表示),但与这些类型不同,它既不是字符类型也不是算术类型。字节只是一组位,只有按位逻辑运算符才能对其进行定义。
这听起来就像应该用于读取文件而不是字符的确切类型。
然后我阅读了这个问题和这个问题,人们争论说将文件读入字节是错误的,而将文件读入字符是正确的。
如果byte不是为访问内存或类似文件而设计的,那么它的目的是什么呢?正如在另外两个问题中引用的那样:
像char和unsigned char一样,它可以用来访问其他对象占用的原始内存(对象表示),但与这些类型不同,它既不是字符类型也不是算术类型。字节只是一组位,只有按位逻辑运算符才能对其进行定义。
这听起来就像应该用于读取文件而不是字符的确切类型。
unsigned char*
或std::byte*
哪个更具表现力?请将其视为词汇类型。 - StoryTeller - Unslander Monicastd::byte
是一个更富表现力的名称。除非有人能给我们一个启发性的答案,否则我认为我永远不会使用它,因为unsigned char
对我来说已经足够了。 - gezai & (i-1)
,它们只想执行位操作。 - MikeMBstd::byte
的另一个原因。(虽然可以争论应该有一个clearLowestBit(std::byte)
函数来进行内部转换,但我真的看不出禁止在字节上进行常规操作(如加法)的好处) - gezastd
函数覆盖它们所有。 - geza