我有一个大的二进制文件,我正在阅读,我想比较当前位置与unsigned long long int.但是,基于C++文档,我不清楚是否:
任何答案或建议将不胜感激.
问:tellg()的返回类型是什么?
A的返回类型istream::tellg()是streampos.看看std :: istream :: tellg.
问:如何将tellg()与unsigned long long int进行比较?
A返回值tellg()是整数类型.所以你可以使用通常的运算符来比较两个ints.但是,您不应该这样做以从中得出任何结论.标准声称支持的唯一操作是:
可以将这种类型的两个对象与运算符==和!=进行比较.它们也可以减去,产生类型streamoff的值.
问: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
{
}
Run Code Online (Sandbox Code Playgroud)