现在c ++ 17了std::byte
,我正在寻找一种方法将读取文件的char
代码转换为读取文件的代码byte
.一个文件包含字节,而不是一堆整数.
然后我读到了这个问题和另一个问题,其中人们认为阅读文件byte
是错误的,并且阅读文件char
是正确的.
如果byte
不是为访问内存而设计的,并且通过类比,文件,那么它的目的是什么?正如其他两个问题所引述:
与char和unsigned char一样,它可以用于访问其他对象占用的原始内存(对象表示),但与这些类型不同,它不是字符类型,也不是算术类型.字节只是一个位集合,只为它定义了按位逻辑运算符.
这听起来像应该用于读取文件的确切类型,而不是字符.
Nic*_*las 17
你可能误解了一些事情.
byte
非常适合"访问内存".当存储只是一个字节序列而不是字符数组时,您打算使用该类型.
Iostream类型不能专门用byte
,因为它们是以字符为界面设计的.也就是说,他们不会将文件视为字节序列; 他们认为它们是人物的序列.现在,您当然可以byte
使用一两个演员直接读入数组.但这不是iostream原生思考的方式.
您必须区分iostream的工作方式和文件的工作方式.毕竟Iostream只是一个文件IO库; 它几乎不是最终的全部文件API.
大多数用于读取二进制数据的文件API都取void*
而不是字符数组.std::fread/fwrite
等等.
也就是说,你应该想到这一点,不是问题std::byte
,而是iostream的一个问题.在他们的长队中只是另一个.
归档时间: |
|
查看次数: |
2111 次 |
最近记录: |