使用seekg
和tellg
可以实现在文件中定位和读取特定位置的数据。以下是一个示例代码,展示了如何使用这两个函数来实现从文件中读取特定行的数据。
#include
#include
#include
int main() {
std::ifstream file("example.txt"); // 打开文件
if (!file.is_open()) {
std::cout << "文件打开失败!" << std::endl;
return 1;
}
int lineNumber = 3; // 要读取的行号
std::string line;
// 定位到指定行
file.seekg(std::ios::beg); // 设置文件指针位置为文件开头
for (int i = 0; i < lineNumber - 1; ++i) {
file.ignore(std::numeric_limits::max(), '\n'); // 忽略当前行
}
// 读取指定行的数据
std::streampos position = file.tellg(); // 记录当前位置
std::getline(file, line);
// 输出结果
std::cout << "第 " << lineNumber << " 行的内容为:" << line << std::endl;
file.close(); // 关闭文件
return 0;
}
以上代码打开一个名为example.txt
的文件,并从中读取指定行的数据。seekg
函数将文件指针定位到指定行的位置,tellg
函数获取当前文件指针的位置。通过调用getline
函数,可以读取到指定行的数据,并将其存储在line
字符串中。最后,输出所读取行的内容。
请注意,在使用seekg
和tellg
之前,需要确保文件已成功打开,并且在使用完后关闭文件。