使用 boost::iostreams::array_sink 和 boost::array<char, n>
using an boost::iostreams::array_sink with a boost::array<char, n>
示例(转载于 from here 下方)表明,使用 array_sink 流,我可以在字符数组上获得输出流功能。
#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?
http://www.boost.org/doc/libs/1_44_0/libs/iostreams/doc/classes/array.html#array_sink
使用 begin/end 或 begin/length 构造器。
array_sink sink {headerBuf.begin(), headerBuf.size()};
示例(转载于 from here 下方)表明,使用 array_sink 流,我可以在字符数组上获得输出流功能。
#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?
http://www.boost.org/doc/libs/1_44_0/libs/iostreams/doc/classes/array.html#array_sink
使用 begin/end 或 begin/length 构造器。
array_sink sink {headerBuf.begin(), headerBuf.size()};