我正在编写一个程序,它会在完成时生成一个大的日志文件(+10 on )。为了将其分开,在我的日志函数中,一旦写入了n行,我就将输出重定向到一个新的文件名。
但是,此文件中的一些行可能很长(+100k个字符),有些行不超过10个字符,并且可以将较大的行聚集在一起。我更愿意按字节大小划分输出,而不是按行。
要持续跟踪已发送到c++流的字节数,最轻量级的方法是什么?
发布于 2012-07-21 03:09:35
如果您正在使用std::ostream,请看一下tellp()成员函数,它返回put区域的当前位置。您可以使用它作为写入字节数的代理。例如:
std::ofstream file(name);
auto i = file.tellp();
// write large log file.
auto j = file.tellp();
if (i != -1 && j != -1) // tellp returns -1 on error.
std::cout << "bytes written: " << j - i << std::endl;还要注意的是,从C++11开始,tellp会刷新绑定的输出流。
https://stackoverflow.com/questions/11585481
复制相似问题