我希望能够使用ostream_iterator流式传输到二进制文件。但是ostream_iterator
uses a 格式化输出功能所以它会写 ASCII,而不是二进制:
std::ostream_iterator
是一个单遍 OutputIterator,写入连续的类型对象T
进入std::basic_ostream
为其构造的对象,使用operator<<
除了编写自己的迭代器之外,还有其他方法可以使用迭代器来编写二进制文件吗?
我正在尝试做的事情的简化示例,但是copy
语句会将 ASCII 写入我的二进制文件:
ofstream foo("foo.txt", ios_base::binary);
vector<int> bar = {13, 42};
copy(bar.cbegin(), bar.cend(), ostream_iterator<decltype(bar)::value_type>(foo));
ostreambuf_iterator比更合适ostream_iterator
。它的重量要轻得多,而且不需要格式化。它采用字符类型的模板参数,因此与大多数流兼容的唯一选择是std::ostream_iterator< char >
.
确保以二进制模式打开流。顺便说一句,标准流缓冲区永远不会以二进制模式打开。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)