我希望能够使用 ostream_iterator
流式传输到二进制文件。但是 ostream_iterator
使用 FormattedOuputFunction所以它会写 ASCII,而不是二进制:
std::ostream_iterator
is a single-pass OutputIterator that writes successive objects of typeT
into thestd::basic_ostream
object for which it was constructed, usingoperator<<
除了编写自己的迭代器之外,还有其他方法可以使用迭代器来编写二进制文件吗?
我正在尝试做的一个简化示例,但是 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 >
.
一定要以二进制模式打开流。顺便说一句,标准流缓冲区永远不会以二进制模式打开。
关于c++ - 用于二进制输出的 ostream_iterator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32050780/