我用來做一些序列化的東西"as it can be seen here"。這工作得很好,但我無法弄清楚如何獲得寫入緩衝區的大小。我是在boost文檔中搜索的,顯然除了自己構建sink/source外,沒有辦法做到這一點?boost的長度:: iostream :: basic_array_sink/source
感謝
我用來做一些序列化的東西"as it can be seen here"。這工作得很好,但我無法弄清楚如何獲得寫入緩衝區的大小。我是在boost文檔中搜索的,顯然除了自己構建sink/source外,沒有辦法做到這一點?boost的長度:: iostream :: basic_array_sink/source
感謝
boost::iostreams::basic_array_sink
車型只有SinkDevice
,它給你只寫語義和沒有告訴多少字節已被寫入的方式。
OTOH,它的兄弟boost::iostreams::basic_array
車型SeekableDevice
允許利用自己的流求()成員函數:
namespace io = boost::iostreams;
char buffer[4096];
io::stream<io::basic_array<char> > source(buffer, buffer_size);
boost::archive::binary_oarchive oa(source);
oa << serializable_object;
// move current stream position to the end, io::seek() returns new position
std::cout << "Bytes written: "
<< io::seek(source, 0, std::ios_base::end)
<< std::endl;
有趣的是,我只是想hkaiser提出並不但得不到字節數寫的解決方案,我得到了初始數組中的字節數(即尋找到最後一直到緩衝區的末尾)。
我不得不稍微調整這一呼籲是:
(int)boost::iostreams::seek(s, 0, std::ios_base::cur)
也許他們在Boost庫,使得它不同的表現改變了一些東西。我認爲我們正在使用2011年1月20日的最新和最好的。
遇到同樣的問題。 – 2014-01-23 00:16:20
謝謝,工作完美! – scooterman 2010-07-08 13:25:00