在C++中,seekg
是用于设置输入流(istream)的读取位置的函数。它的完整声明如下:
istream& seekg(streampos pos);
istream& seekg(streamoff off, ios_base::seekdir dir);
其中,streampos
表示从流的起始位置开始的偏移量,而streamoff
表示相对于当前位置的偏移量。ios_base::seekdir
是一个枚举类型,用于指定相对于偏移量的起始位置,有以下三个取值:
ios_base::beg
:从流的起始位置开始计算偏移量。ios_base::cur
:相对于当前位置计算偏移量。ios_base::end
:相对于流的末尾位置计算偏移量。seekg
函数的作用是将读取位置设置为指定的位置,以便后续的读取操作从该位置开始。使用seekg
函数可以在读取文件时跳过指定的字节数或者重新定位读取位置。
以下是seekg
函数的一些示例用法:
ifstream file("data.txt");
file.seekg(0);
ifstream file("data.txt");
file.seekg(-10, ios_base::end);
ifstream file("data.txt");
file.seekg(20, ios_base::cur);
需要注意的是,seekg
函数返回的是输入流对象的引用,可以通过链式调用设置其他输入流的属性。另外,需要确保在调用seekg
之前已经打开了文件流,否则可能会导致错误。