在C++中,seekg
函数是用于在输入流中设置读取位置的。要实现精准定位,你需要传递一个偏移量和参考位置作为参数。偏移量表示从参考位置开始的字节数,参考位置可以是std::ios::beg
(从文件开始处计算偏移量)、std::ios::cur
(从当前位置计算偏移量)或std::ios::end
(从文件末尾计算偏移量)。
以下是一个使用seekg
实现精准定位的示例:
#include <iostream>
#include <fstream>
int main() {
std::ifstream file("example.txt", std::ios::binary);
if (!file) {
std::cerr << "Error opening file" << std::endl;
return 1;
}
// 将文件指针移动到第5个字节
file.seekg(4, std::ios::beg);
// 检查文件指针是否成功移动
if (file.fail()) {
std::cerr << "Error seeking file" << std::endl;
return 1;
}
// 读取当前位置的字符
char ch;
file.get(ch);
std::cout << "Character at position 5: " << ch << std::endl;
// 关闭文件
file.close();
return 0;
}
在这个示例中,我们首先打开一个名为example.txt
的文件。然后,我们使用seekg
函数将文件指针移动到第5个字节(偏移量为4,参考位置为std::ios::beg
)。接下来,我们读取当前位置的字符并将其输出到控制台。最后,我们关闭文件。