C++ 记录已发送到流的字节数的轻量级方法?
我正在编写一个程序,在完成时生成一个大日志文件(+10GB)。要将其拆分,在我的日志函数中,一旦写入C++ 记录已发送到流的字节数的轻量级方法?,c++,stream,C++,Stream,我正在编写一个程序,在完成时生成一个大日志文件(+10GB)。要将其拆分,在我的日志函数中,一旦写入n行,我将输出重定向到一个新的文件名 但是,此文件中的某些行可能非常大(+100k个字符),有些行不超过10个字符,并且可以对较大的行进行群集。我更愿意按字节大小而不是按行分割输出 什么是保持发送到C++流字节数的最轻的方法?如果使用 STD::OSWATE,请查看成员函数,它返回放置区域的当前位置。您可以使用它作为写入字节数的代理。例如: std::ofstream file(name); au
n
行,我将输出重定向到一个新的文件名
但是,此文件中的某些行可能非常大(+100k个字符),有些行不超过10个字符,并且可以对较大的行进行群集。我更愿意按字节大小而不是按行分割输出
什么是保持发送到C++流字节数的最轻的方法?
如果使用<代码> STD::OSWATE,请查看成员函数,它返回放置区域的当前位置。您可以使用它作为写入字节数的代理。例如: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;
std::of流文件(名称);
auto i=file.tellp();
//写入大型日志文件。
auto j=file.tellp();
if(i!=-1&&j!=-1)//tellp在出错时返回-1。
std::您是否希望文件大小等于file.tellp()*sizeof(char)
?是的,我希望如此,但仍然编写一个小测试来说服我自己。好的,感谢您为我指出了正确的方向,这很好地工作。这是错误的。如果写入失败(这是OP试图检查的),则tellp需要返回-1声音,通过首先检查tellp
是否返回-1
,否,可以轻松修复?