【问题标题】:using an boost::iostreams::array_sink with a boost::array<char, n>使用 boost::iostreams::array_sink 和 boost::array<char, n>
【发布时间】:2016-04-11 13:34:48
【问题描述】:

示例(在from here 下方转载)表明,使用array_sink 流,我可以在char 数组上获得输出流功能。

#include <boost/iostreams/device/array.hpp>
#include <boost/iostreams/stream.hpp>
#include <iostream>

using namespace boost::iostreams;

int main()
{
    char buffer[16];
    array_sink sink{buffer};
    stream<array_sink> os{sink};
    os << "Boost" << std::flush;
    std::cout.write(buffer, 5);
}

我需要的是从 boost::array 中获取 array_sink 流。 例如

...
using namespace boost::iostreams;

boost::array<char, 16384> headerBuf;

array_sink          sink    {headerBuf};
stream<array_sink>  os      {sink};

os << "somedata";

在 gcc 4.4.7 下编译时,出现错误:

error: no matching function for call to ‘boost::iostreams::basic_array_sink<char>::basic_array_sink(<brace-enclosed initializer list>)’

我猜 gcc 4.4.7 可能不支持初始化器列表,尽管一般来说,是否有另一种使用 boost::array 初始化 array_sink 的方法?

【问题讨论】:

    标签: c++ arrays gcc boost boost-iostreams


    【解决方案1】:

    http://www.boost.org/doc/libs/1_44_0/libs/iostreams/doc/classes/array.html#array_sink

    使用 begin/end 或 begin/length ctors。

    array_sink          sink    {headerBuf.begin(), headerBuf.size()};
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-14
      • 2011-08-05
      • 2020-07-19
      • 1970-01-01
      • 2012-06-06
      • 1970-01-01
      • 2018-08-28
      • 2016-11-20
      相关资源
      最近更新 更多