Я хочу написать кучу данных объекту 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, чтобы вы могли вывести счетчик streambuf из std :: streambuf. в нем делегировать операции с исходным streambuf после записи информации о счетчике. Здесь есть хороший учебник: http://www.mr-edd.co.uk/blog/beginners_guide_streambuf –