
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中可用的字节数?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)