在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
之前已經打開了文件流,否則可能會導致錯誤。