c语言seekg()函数的用法详解

请注意,seekg()函数是C++中的一个函数,而不是C语言中的函数。它用于设置输入流的读取位置。 函数原型:

streampos seekg(streampos pos);
streampos seekg(streamoff off, ios_base::seekdir dir);

第一个原型将读取位置设置为给定的绝对位置。输入参数pos是一个streampos类型的对象,表示要设置的绝对位置。 第二个原型将读取位置设置为给定的相对位置。输入参数off是要设置的相对位置的偏移量,而dir是指定相对位置的方向的ios_base::seekdir类型的对象。可以使用以下三个值之一:

  • ios_base::beg:从文件开头开始
  • ios_base::cur:从当前位置开始
  • ios_base::end:从文件末尾开始 seekg()函数返回一个streampos类型的对象,表示设置后的读取位置。如果设置失败,则返回-1。 下面是一个示例代码,展示了如何使用seekg()函数:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
  ifstream file("example.txt");
  if (!file.is_open()) {
    cout << "Failed to open file!" << endl;
    return 1;
  }
  file.seekg(5); //设置读取位置为第6个字符
  char c;
  file >> c;
  cout << "The 6th character is: " << c << endl;
  file.seekg(-5, ios_base::end); //设置读取位置为倒数第6个字符
  file >> c;
  cout << "The last 6th character is: " << c << endl;
  file.close();
  return 0;
}

输出结果:

The 6th character is: e
The last 6th character is: l

在此示例中,seekg()函数用于设置读取位置,以便在文件中读取指定位置的字符。第一个seekg()函数将读取位置设置为第6个字符,而第二个seekg()函数将读取位置设置为倒数第6个字符。最终输出结果表明,这两个字符正是我们预期的字符。

 
  • seekg函数