在C++文件流中,seekg()函數用于將文件指針移動到指定位置。它的原型如下:
istream& seekg(streampos pos);
istream& seekg(streamoff off, seekdir way);
第一個原型將文件指針移動到指定的絕對位置pos,streampos是一個類型,表示文件流的位置。
第二個原型將文件指針移動到離當前位置off個字節的位置,way參數指定了移動的方向,它可以取以下值:
ios::beg:從文件開頭偏移off個字節;
ios::cur:從當前位置偏移off個字節;
ios::end:從文件末尾偏移off個字節。
seekg()函數返回一個istream類型的引用,在進行文件操作時,可以使用該引用來檢測是否發生了錯誤。
下面是一個示例代碼,演示了使用seekg()函數將文件指針移動到文件開頭和文件末尾的用法:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream file("test.txt");
if (!file) {
cout << "Error opening file." << endl;
return 1;
}
// 獲取文件大小
file.seekg(0, ios::end);
int filesize = file.tellg();
cout << "File size: " << filesize << " bytes" << endl;
// 將文件指針移動到文件開頭
file.seekg(0, ios::beg);
char ch;
file.get(ch);
cout << "First character: " << ch << endl;
// 將文件指針移動到文件末尾
file.seekg(0, ios::end);
file.get(ch);
cout << "Last character: " << ch << endl;
file.close();
return 0;
}
在這個示例中,首先打開了一個名為test.txt的文件,并檢查文件是否成功打開,如果打開失敗,就輸出錯誤信息并返回。
接下來,使用seekg()函數將文件指針移動到文件末尾,并使用tellg()函數獲取文件指針的位置,即文件大小。
然后,將文件指針移動到文件開頭,并讀取第一個字符。最后,將文件指針移動到文件末尾,并讀取最后一個字符。
最后,關閉文件并返回。
注意,在使用seekg()函數之前,要先打開文件,并進行錯誤檢查。另外,文件流的位置是從零開始計數的。