C tellg()返回类型

前端之家收集整理的这篇文章主要介绍了C tellg()返回类型前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个大的二进制文件,我正在阅读,我想比较当前位置与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.

查看std::streampos.

问:tellg()的返回类型是否有可能小于unsigned long long int的最大值(来自numeric_limits)?

A该标准不作任何声称支持或反驳它.在一个平台上可能是真的,而另一个平台则是假的.

附加信息

比较streampos,支持不支持的比较操作的示例

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
{
}
原文链接:https://www.f2er.com/c/118596.html

猜你在找的C&C++相关文章