seekp()和seekg()函數是C++中的流定位函數,用于在流中定位讀寫位置。
seekp()函數用于定位輸出流的寫入位置,seekg()函數用于定位輸入流的讀取位置。
兩個函數的參數是一個偏移量,用于指定相對于特定位置的位置。偏移量可以是正數、負數或零。
seekp()函數有兩個參數,第一個參數是偏移量,第二個參數是指定開始位置的標志。開始位置標志有三個選項:
seekg()函數的參數和seekp()函數相同。
下面是seekp()和seekg()函數的簡單應用示例:
#include <iostream>
#include <fstream>
int main() {
std::ofstream outputFile("example.txt");
// 寫入數據到文件
outputFile << "Hello, World!" << std::endl;
outputFile << "This is a test.";
// 移動寫入位置到文件起始位置
outputFile.seekp(0, std::ios::beg);
// 再次寫入數據到文件
outputFile << "New data.";
// 關閉文件
outputFile.close();
std::ifstream inputFile("example.txt");
// 移動讀取位置到文件末尾
inputFile.seekg(0, std::ios::end);
// 獲取文件大小
std::streampos fileSize = inputFile.tellg();
std::cout << "File size: " << fileSize << " bytes" << std::endl;
// 關閉文件
inputFile.close();
return 0;
}
以上示例中,首先創建一個輸出文件流outputFile
,寫入一些數據到文件中。然后使用seekp()
函數將寫入位置移動到文件起始位置,并再次寫入新的數據。
接下來創建一個輸入文件流inputFile
,使用seekg()
函數將讀取位置移動到文件末尾,并使用tellg()
函數獲取文件的大小。
最后關閉文件流。
輸出結果為:
File size: 16 bytes
這個例子演示了如何使用seekp()
和seekg()
函數在文件中定位讀寫位置。