gpt4 book ai didi

c++ - 将 boost IOStreams 与 std::ostream_iterator 结合使用

转载 作者:行者123 更新时间:2023-11-30 03:06:22 24 4
gpt4 key购买 nike

我尝试使用基于数组设备的流并希望将流传递给 std::ostream_iteratorstd::istream_iterator,但不幸的是,我得到了一个gcc 4.3.5 编译错误。

Boost::IOStreams 文档声明 io::stream 派生自 std::basic_istreamstd::basic_ostream 或两者 (std::basic_iostream) 都取决于底层设备类别。数组设备具有可搜索类别,因此我希望 io::stream 派生自 std::basic_iostream 并与 std::ostream_iteratorstd 兼容: :istream_iterator。但不幸的是我遇到了编译错误。

这是代码片段:

namespace io=boost::io;

typedef unsigned char byte;
typedef io::basic_array<byte> array_device;
typedef io::stream<array_device> array_stream;

byte my_buffer[256]={};

array_stream ios_(my_buffer);

std::istream_iterator<byte> in(ios_);

最后一行导致错误说明:

src/my_file.cpp: In member function 'void my_test_class::ctor::test_method()':
src/my_file.cpp:86: error: no matching function for call to
'std::istream_iterator<unsigned char, char, std::char_traits<char>, int>::istream_iterator(my_test_class::<unnamed>::array_stream&)'

最佳答案

您没有为 std::istream_iterator 提供足够的模板参数——第二个参数是流的基础字符类型,默认为 char,但是流的基础字符类型是 byte (unsigned char)。

改变

std::istream_iterator<byte> in(ios_);

std::istream_iterator<byte, byte> in(ios_);

应该可以。

关于c++ - 将 boost IOStreams 与 std::ostream_iterator 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6717028/

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