c++ - C 和 C++ 标准库函数如何找到文件末尾?

标签 c++ c file-io filesystems c++-standard-library

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/

相关文章:

c++ - 将随机数插入具有排序顺序的数组中 C++

visual-studio - TFS 2005下永久删除

比较和替换 C 中的重音/特殊字符

c - FILE* 和文件描述符读/写性能

java - 由于 Linux 中不同的挂载卷,文件移动抛出 IOException

java - 在读取和写入文件时避免丢失换行符 (\n)

c++ - message.pb.h 文件中的 Protobuf : Cannot open include file common. h

c++将大文本文件读取为字符串(大于string::max_size)

c++ - 翻转 map 键值对

c - 在 C 中将匿名结构作为参数传递