首页 > 解决方案 > C++ 任何用于从流中读取二进制值的标准库

问题描述

我的意思是说我有一个包含 4 个字节的文件0x2a x00 0x00 0x00

我想去(假设 f 是一个开放的 ifstream)

uint32_t x;
f >> x;

并让 x 包含 42

我知道这不起作用,但它似乎是一件显而易见的事情,令人惊讶的是它不在标准中。例如,显示 ios::binaryio 的打开标志。

建议的事情通常是

f.read(reinterpret_cast<char*>(&x), sizeof(x));

这很丑陋且不安全

标签: c++iostream

解决方案


是否仍然没有从流中读取二进制值的库标准

有两种:C API 和 C++ 一种。

这很丑陋

始终可以将这些调用包装到根据您的需要量身定制的更优雅的界面中。

并且不安全

包装器也可以解决这个问题。


推荐阅读