STD :: BYTE的目的是什么
What is the purpose of std::byte?
现在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 的问题。只是其中的一条线。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- C++避免重复声明的语法是什么
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- C++从另一个类访问公共静态向量的正确方法是什么
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- C++中名称篡改的目的是什么
- 在 c++ 中拥有一组结构的正确方法是什么?
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 是什么阻止DOMTimerCoordinator::NextID进入无休止的循环
- 派生类销毁的最佳实践是什么
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 通过JNI传递数据数组的最快方法是什么
- "using namespace std;"在C++的作用是什么?
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 文件系统:复制功能的速度秘诀是什么
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 在 C++17 中表示 std::byte 文字的正确方法是什么?
- STD :: BYTE的目的是什么
- (BYTE)-1是什么意思?