seekg如何找到文件的末尾
How does seekg find the end of the file?
在使用seekg&在一份文件上,我想知道引擎盖下发生了什么?
// Open file and get file size
int myFileSize;
std::fstream myFile;
myFile.open(myFileName, std::ios::in|std::ios::binary);
if (myFile.is_open())
{
myFile.seekg(0, std::ios::end);
myFileSize = myFile.tellg();
myFile.seekg(0, std::ios::beg);
myFile.close();
}
Q1:seekg是否真的遍历了文件的全部内容,直到找到一些特殊的"EOF字符"?还是使用文件系统提供的其他信息来"知道"文件的末尾在哪里?
Q2:seekg是一个流搜索操作。这是否意味着文件的全部内容必须通过流?
如果我对这一切的运作方式只有一个初步的了解,请原谅我。
Q1:No。操作系统将知道文件的大小,seekg()
将使用该知识——无论文件是1100字节还是10000000000字节,都需要几乎相同的时间。
Q2:没有。它只是设置当前的"get指针",在Windows或Linux系统中,它可以翻译为"SetFilePos"或"lseek"。几乎所有其他操作系统都有类似的概念。
相关文章:
- 在.cpp文件中找不到 ISR
- CMake GoogleTests在我的测试文件中找不到导入的头文件
- 从文件中找出字符'a',然后计算字符出现的行数
- 运行可执行文件时找不到共享库,即使共享库存在于指定的路径中
- 在我的 cpp 或头文件中找不到错误,类构建失败
- 生成文件错误 - 找不到文件 - *.cpp
- 检查日志文件以找出 vcredist.exe 安装失败的原因
- 生成可执行文件时找不到文件,但在eclipse c 中运行正常
- 在可执行文件中找不到C++动态链接库
- 头文件 iostream 找不到 Visual Studio 2010
- 继承(通过文件)找不到类
- 在命名空间/头文件中找不到类
- CMake 在使用 android-cmake 工具链文件时找不到 Boost 库
- 比较两个文件,找出区别
- c++头文件间歇性找不到
- Qt资源中QML文件的“找不到文件”错误
- 编译c++文件时找不到Octave: mkoctfile
- C++编译器在Steinberg VST SDK文件中找不到没有绝对路径的文件
- 在Qt中的.pro文件中找不到路径
- 我在Qt设计器文件>中找不到C++项目