ostream
オブジェクトに一連のデータを書き込んで、書き込まれたバイト数を返したいとします。たとえば:std :: ostreamオブジェクトに書き込まれたバイト数を追跡するにはどうすればよいですか?
using namespace std;
size_t writeStuffToStream(ostream &stream)
{
stream << some_string << some_integer << some_other_arbitrary_object << endl;
return number_of_bytes_written;
}
ありstringstream
にすべてを書き込み、その外のバイト数を取得し、その後ストリームにstringstream
を書くの明白な回避策があるが、それは、余分な時間とメモリを取ります。
私が書きたいと思っていたすべてのデータが既存の文字列だった場合は、問題はありません。問題は、some_integer
とsome_other_arbitrary_object
です。
streambufオブジェクトを連鎖させることができるので、std :: streambufからcountbufを取得し、カウンタ情報を記録した後に操作を元のstreambufに委譲することができます。 http://www.mr-edd.co.uk/blog/beginners_guide_streambuf –