3

我的问题很简单:

我应该使用带有 SEEK_END 的 fseek 来到达文件的末尾,然后获取它的长度吗?因为在男人里面说:

  • 允许库实现无意义地支持 SEEK_END(因此,使用它的代码没有真正的标准可移植性)。

现在我正在使用 stat(来自 C)哪个更好?

4

2 回答 2

3

ftell函数返回一个 long,这意味着在 ILP32 系统上,您无法正确获取大于 2GB 的文件的大小。您应该使用该stat函数或类似函数来获取文件的大小;检查您所针对的操作系统的手册,以防您使用不同的函数名称(stat64)或定义预处理器宏以获得大文件的所需行为。

于 2013-09-27T08:05:53.940 回答
1

由于 C++ 继承自 C fseekSEEK_END因此我在这里引用 C 标准:

C11(ISO/IEC 9899:201x) §7.21.9.2 fseek 功能 第 3 节

二进制流不需要有意义地支持fseekwherece 值为 的调用SEEK_END

于 2013-09-27T08:10:32.370 回答