【问题标题】:ifstream, bytes read?ifstream,读取的字节数?
【发布时间】:2009-12-20 22:58:16
【问题描述】:

如何获取使用 ifstream::read 函数读取的字节数?

Tell 说文件是 10 个字节,windows 说它也是 10 个字节,但文件中只有 8 个字节,所以当我读取它时,它只读取 8 个字节,所以我最终得到了太大的 a缓冲区。

【问题讨论】:

  • 您确定文件末尾没有换行符(即 Windows 上的 \r\n)吗?这会给你丢失的两个字节。
  • 是的,用 fopen 等尝试过,它只返回读取 8 个字节。

标签: c++


【解决方案1】:

您可以在阅读后立即在流上调用gcount() 来查找。

ifs.read(buf, sizeof buf);
std::streamsize bytes = ifs.gcount();

【讨论】:

  • 如果 gcount() 没有准确读取请求,fstream 对象是否仍处于有效状态继续读取?
【解决方案2】:

有一个名为 readsome(...) 的函数可以满足您的需求:

streamsize readsome ( char* s, streamsize n );

返回值字符数 提取出来的。

【讨论】:

  • readsome 只从与流关联的内存缓冲区中读取,即使文件足够大,也不一定会读取到文件末尾。除非在非常有限的情况下,否则您不想使用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-26
  • 2012-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多