在C++中,seekg
是用于設(shè)置輸入流(istream)的讀取位置的函數(shù)。它的完整聲明如下:
istream& seekg(streampos pos);
istream& seekg(streamoff off, ios_base::seekdir dir);
其中,streampos
表示從流的起始位置開始的偏移量,而streamoff
表示相對(duì)于當(dāng)前位置的偏移量。ios_base::seekdir
是一個(gè)枚舉類型,用于指定相對(duì)于偏移量的起始位置,有以下三個(gè)取值:
ios_base::beg
:從流的起始位置開始計(jì)算偏移量。ios_base::cur
:相對(duì)于當(dāng)前位置計(jì)算偏移量。ios_base::end
:相對(duì)于流的末尾位置計(jì)算偏移量。seekg
函數(shù)的作用是將讀取位置設(shè)置為指定的位置,以便后續(xù)的讀取操作從該位置開始。使用seekg
函數(shù)可以在讀取文件時(shí)跳過指定的字節(jié)數(shù)或者重新定位讀取位置。
以下是seekg
函數(shù)的一些示例用法:
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
函數(shù)返回的是輸入流對(duì)象的引用,可以通過鏈?zhǔn)秸{(diào)用設(shè)置其他輸入流的屬性。另外,需要確保在調(diào)用seekg
之前已經(jīng)打開了文件流,否則可能會(huì)導(dǎo)致錯(cuò)誤。