我有一个大的二进制文件,我正在阅读,我想比较当前位置与unsigned long long int.但是,根据C文档,我不清楚是否:
> tellg()的返回类型是什么
>如何将tellg()与unsigned long long int进行比较?
> tellg()的返回类型是否可能具有小于unsigned long long int的最大值(来自numeric_limits)?
任何答案或建议将不胜感激.
解决方法
问:tellg()的返回类型是什么?
A istream :: tellg()的返回类型是streampos.查看std::istream::tellg.
问:如何将tellg()与unsigned long long int进行比较?
A tellg()的返回值是一个整数类型.因此,您可以使用常用运算符来比较两个整数.但是,您不应该这样做以从中得出任何结论.标准声称支持的唯一操作是:
Two objects of this type can be compared with operators == and !=. They can also be subtracted,which yields a value of type streamoff.
问:tellg()的返回类型是否有可能小于unsigned long long int的最大值(来自numeric_limits)?
A该标准不作任何声称支持或反驳它.在一个平台上可能是真的,而另一个平台则是假的.
附加信息
ifstream if(myinputfile); // Do stuff. streampos pos1 = if.tellg(); // Do more stuff streampos pos2 = if.tellg(); if ( pos1 == pos2 ) // Supported { // Do some more stuff. } if ( pos1 != pos2 ) // Supported { // Do some more stuff. } if ( pos1 != pos2 ) // Supported { // Do some more stuff. } if ( pos1 == 0 ) // supported { // Do some more stuff. } if ( pos1 != 0) // supported { // Do some more stuff. } if ( pos1 <= pos2 ) // NOT supported { // Do some more stuff. } int k = 1200; if ( k == pos1 ) // NOT supported { }