рассмотрении простого подсчета фильтр:в boost iostream filtering_ostream, в чем разница между sync(), strict_sync() и flush()?
class CountableOstreamFilter : public boost::iostreams::multichar_output_filter {
public:
CountableOstreamFilter(): m_written(0) {
}
template<typename Sink>
std::streamsize write(Sink& dest, const char* s, std::streamsize n)
{
auto result = boost::iostreams::write(dest, s, n);
assert(n == result);
m_written += result;
return result;
}
inline std::streamsize writtenBytes() const {
return m_written;
}
private:
std::streamsize m_written;
};
и использовать его следующим образом:
boost::iostreams::filtering_ostream counted_cout;
counted_cout.push(CountableOstreamFilter());
counted_cout.push(std::cout);
counted_cout << "hello world";
, что будет разница между вызовом синхронизации(), strict_sync() или заподлицо()? counted_cout.sync(); // что отличается от этого вызова counted_cout.strict_sync(); // этому вызову counted_cout.flush(); // к этому вызову?
Я использую бустер 1.50.0