【发布时间】:2014-08-16 23:38:16
【问题描述】:
fseek(myFILEptr, 0, SEEK_END) 和 myifstream.seekg(0, std::ios::end) 如何工作?
他们是否必须检查每个字符?它们的时间复杂度是否与文件大小成线性关系?它比这更聪明吗?典型的文件系统提供哪些信息来处理?
语言标准处理了哪些部分,哪些没有?对于这两个标准都没有的部分,有没有事实上的标准?
我在这里将 C 和 C++ 归为一组,因为我希望它们的答案几乎相同,甚至 C++ 函数可以并且可能经常根据 C 函数来实现。对吗?
【问题讨论】:
-
通常,这些函数将委托给运行程序的操作系统。典型的操作系统将提供一种在硬件允许的情况下快速查找文件中任意偏移量的方法(磁带驱动器是慢查找硬件的一个示例)。 C 或 C++ 标准没有提供特定的复杂性保证。
标签: c++ c file-io filesystems c++-standard-library