Istream和ostream跨平台
istream and ostream across platforms
假设我想在我的大端机器上写这个
an_ostream_impl my_output_on_BE;
my_output_on_BE << __int32(0x1234);
在我的小端机器上
an_istream_impl my_input_on_LE;
__int32 value;
my_input_on_LE >> value;
assert( value == 0x1234 );
是否有istream/ostream实现允许这个?例如,总是流数字在大端(或任何格式)?
如果您需要在机器之间共享比单个整数更复杂的数据,我衷心推荐Google Protocol Buffers。您在文本文件中定义"消息",通过编译器(协议)运行它们,并获得您选择的语言的源代码。此源定义了与您的消息规范以及序列化和反序列化方法相对应的对象。
我不知道有任何实现能够做到这一点。自己编写类似这样的东西最简单的方法可能是使用Boost.Iostreams。您可以简单地实现适当转换的设备,然后使用stream
创建一个流,该流委托给您编写的设备并公开标准iostream
接口。
在这种情况下,唯一的方法可能是自己序列化/反序列化,即一个字节一个字节地读/写。
相关文章:
- ostream过载时的缓冲区冲洗
- 通过网络、跨平台传递std::变体是否安全
- 需要从 istream 和 ostream 派生 iostream
- "ostream &os"有什么用?
- 为什么常量词在重载运算符中不与 ostream 对象一起使用<<?
- 如何跨平台将二进制资源构建到程序中?
- 我的运算符重载是否有效<<(流插入)左操作数不是 ostream
- 以跨平台的方式将图像源路径从C++发送到 QML
- C++表达SFINAE和ostream操纵器
- 跨平台 GPU 计算
- 在哪里存储跨平台C++应用存储?
- 在抛出 'std::runtime_error' 的实例后终止调用 what(): Filebuf 和 ostream 的 I/O 错误
- oStream 不打印添加两个 valarray 的结果(使用运算符重载)
- 逗号在重载 ostream 和 istream 在结构中分开
- 如何将外部依赖引入跨平台CMake项目?
- 为什么 Clang std::ostream 写一个 std::istream 无法读取的双精度?
- ostream 运算符<< 为获取 STL 容器而过载,传递 std::string 会破坏它?
- 将 VS Code 用于跨平台可缩放C++项目
- Std:ostream和跨平台兼容性
- Istream和ostream跨平台