阅读量:6
seekp()和seekg()函数是C++中的流定位函数,用于在流中定位读写位置。
seekp()函数用于定位输出流的写入位置,seekg()函数用于定位输入流的读取位置。
两个函数的参数是一个偏移量,用于指定相对于特定位置的位置。偏移量可以是正数、负数或零。
seekp()函数有两个参数,第一个参数是偏移量,第二个参数是指定开始位置的标志。开始位置标志有三个选项:
- ios::beg:相对于流的起始位置
- ios::cur:相对于当前位置
- ios::end:相对于流的末尾位置
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()
函数在文件中定位读写位置。