fseek(myFILEptr, 0, SEEK_END)
和 myifstream.seekg(0, std::ios::end)
是如何工作的?
他们是否必须检查每个字符,他们的时间复杂度是否与文件大小呈线性关系?它比那更聪明吗?典型的文件系统提供哪些信息以供使用?
其中哪些部分由语言标准解决,哪些没有?对于这两个标准中都没有的部分,是否有事实上的标准?
我在这里将 C 和 C++ 组合在一起,因为我希望每个答案几乎相同,甚至 C++ 函数可以而且可能经常根据 C 函数来实现。对吗?
最佳答案
在实践中,语言实现依赖于操作系统来处理这个问题(而操作系统又依赖于文件系统)。例如,POSIX 提供了 lseek
系统调用。
因此他们不能对复杂性做出任何保证;它们取决于操作系统/硬件的实现。
关于c++ - C 和 C++ 标准库函数如何找到文件末尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25345011/