Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 定位时对大文件使用大ostream tellp()函数>;乌龙乔马克斯酒店_C++_Std_Ostream - Fatal编程技术网

C++ 定位时对大文件使用大ostream tellp()函数>;乌龙乔马克斯酒店

C++ 定位时对大文件使用大ostream tellp()函数>;乌龙乔马克斯酒店,c++,std,ostream,C++,Std,Ostream,我试图存储指向不同位置的文件偏移量。 使用tellp()函数,我可以知道文件中的实际位置,即整数 当这个数字达到4.294.967.295时,问题就出现了。出现溢出,然后tellp没有向我显示正确的号码。那么,处理大(>4GB)文件的方式是什么呢通过GCC C++库,如果编译器支持这些位置,则它们的位置将是64位整数。在我的例子中(英特尔C++编译器),限制是ULUNGUXMAX,这是UITIXMAX相同的,所以这里只有4GB文件。有什么诀窍吗?记住tellp实际上并没有返回一个正常的整数,它返

我试图存储指向不同位置的文件偏移量。 使用tellp()函数,我可以知道文件中的实际位置,即整数


当这个数字达到4.294.967.295时,问题就出现了。出现溢出,然后tellp没有向我显示正确的号码。那么,处理大(>4GB)文件的方式是什么呢

通过GCC C++库,如果编译器支持这些位置,则它们的位置将是64位整数。在我的例子中(英特尔C++编译器),限制是ULUNGUXMAX,这是UITIXMAX相同的,所以这里只有4GB文件。有什么诀窍吗?记住
tellp
实际上并没有返回一个正常的整数,它返回一个
pos\u类型的值。这种类型可能是
std::fpos
类的一种特殊化。在库中搜索
std::fpos
类以真正了解返回的位置是什么类型。numeric_limits::max()返回我9223372036854775807,但当达到4GB限制时,(unsigned long)(os.tellp())。。。“pos”再次变为一个小数字