确定 std::istream 长度的更好方法?

2024-04-28

有没有比以下更好的方法来确定 std::istream 的长度:

std::istream* pcStream = GetSomeStream();
pcStream->seekg(0, ios::end);
unsigned int uiLength = pcStream->tellg();

必须寻找到流的末尾,然后再寻找到原始位置,这似乎非常浪费,特别是如果流可能是某些慢速媒体(如 CD 或 DVD)上的文件。


“最好”的方法是避免需要长度:)

  • 并非所有流都是可查找的(例如,想象网络套接字上的 istream)
  • tellg() 的返回类型不一定是数字(唯一的要求是它可以传递回eekg() 以返回到相同的位置)
  • 即使它是数字,也不一定是字节数。例如,它可能是一个“神奇”值,意思是“最后”
  • 对于 fstreams,大小写和换行转换等问题可能会把事情搞砸
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

确定 std::istream 长度的更好方法? 的相关文章

随机推荐