gpt4 book ai didi

c++ - 用于二进制输出的 ostream_iterator

转载 作者:搜寻专家 更新时间:2023-10-31 00:32:14 27 4
gpt4 key购买 nike

我希望能够使用 ostream_iterator 流式传输到二进制文件。但是 ostream_iterator使用 FormattedOuputFunction所以它会写 ASCII,而不是二进制:

std::ostream_iterator is a single-pass OutputIterator that writes successive objects of type T into the std::basic_ostream object for which it was constructed, using 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 > .

一定要以二进制模式打开流。顺便说一句,标准流缓冲区永远不会以二进制模式打开。

关于c++ - 用于二进制输出的 ostream_iterator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32050780/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com