【发布时间】:2015-10-19 18:05:20
【问题描述】:
我熟悉的获取流大小的方法包括:
foo.seekg(0, ios::end);
int bar = tellg();
foo.seekg(0, ios::beg);
但我宁愿不移动流的位置!它显然已经知道它的缓冲区的起点和终点,那为什么我不能直接访问该信息呢?
在我记忆深处的某个地方,我认为有一种方法可以从流的ios 或ios_base 中获取此信息。但我就是想不起来。其他人能记得如何做到这一点吗?
【问题讨论】:
-
是什么让您认为它知道底层数据的真正起点/终点?
foo到底是什么类型的流?如果它是一个文件流,您是否希望它一次将整个文件缓冲在内存中?根据流类型,需要查找。 -
'流大小'已经是一个橡皮概念。连接到对等方尚未关闭的套接字的流的大小是多少?流不是数组。
标签: c++ stream size buffer string-length