2010-07-07 25 views

回答

4

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; 
+0

謝謝,工作完美! – scooterman 2010-07-08 13:25:00

4

有趣的是,我只是想hkaiser提出並不但得不到字節數寫的解決方案,我得到了初始數組中的字節數(即尋找到最後一直到緩衝區的末尾)。

我不得不稍微調整這一呼籲是:

(int)boost::iostreams::seek(s, 0, std::ios_base::cur) 

也許他們在Boost庫,使得它不同的表現改變了一些東西。我認爲我們正在使用2011年1月20日的最新和最好的。

+0

遇到同樣的問題。 – 2014-01-23 00:16:20

相關問題