C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 如何找出std :: istream中可用的字节数?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我想将std :: istream的内容读取()到缓冲区,我必须首先知道有多少数据可用来知道缓冲区的大小.为了从istream获取可用字节数,我目前正在做这样的事情:
std::streamsize available( std::istream &is )
{
    std::streampos pos = is.tellg();
    is.seekg( 0,std::ios::end );
    std::streamsize len = is.tellg() - pos;
    is.seekg( pos );
    return len;
}

同样地,因为Std :: istream :: eof()不是一个非常有用的基金AFAICT,为了找出istream的get指针是否在流的末尾,我这样做:

bool at_eof( std::istream &is )
{
    return available( is ) == 0;
}

我的问题:

有没有更好的方法从istream获取可用字节数?如果不是在标准库中,也许在boost中?

解决方法

对于std :: cin,您不需要担心缓冲,因为它已经缓冲了 – 而且您无法预测用户笔划的密钥数量.

对于打开的二进制std :: ifstream,它们也是缓冲的,你可以调用seekg(0,std :: ios:end)和tellg()方法来确定那里有多少字节.

您还可以在阅读后调用gcount()方法

char buffer[SIZE];

while (in.read(buffer,SIZE))
{
  std::streamsize num = in.gcount();
  // call your API with num bytes in buffer 
}

对于通过std :: getline(inputstream,a_String)读取文本输入并在之后分析该字符串可能很有用.

大佬总结

以上是大佬教程为你收集整理的c – 如何找出std :: istream中可用的字节数?全部内容,希望文章能够帮你解决c – 如何找出std :: istream中可用的字节数?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。