Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 记录已发送到流的字节数的轻量级方法?_C++_Stream - Fatal编程技术网

C++ 记录已发送到流的字节数的轻量级方法?

C++ 记录已发送到流的字节数的轻量级方法?,c++,stream,C++,Stream,我正在编写一个程序,在完成时生成一个大日志文件(+10GB)。要将其拆分,在我的日志函数中,一旦写入n行,我将输出重定向到一个新的文件名 但是,此文件中的某些行可能非常大(+100k个字符),有些行不超过10个字符,并且可以对较大的行进行群集。我更愿意按字节大小而不是按行分割输出 什么是保持发送到C++流字节数的最轻的方法?如果使用 STD::OSWATE,请查看成员函数,它返回放置区域的当前位置。您可以使用它作为写入字节数的代理。例如: std::ofstream file(name); au

我正在编写一个程序,在完成时生成一个大日志文件(+10GB)。要将其拆分,在我的日志函数中,一旦写入
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
,否,可以轻松修复?