C++中seekp与seekg的使用
时间: 2023-06-26 10:05:45 浏览: 61
在C++中,`seekp`和`seekg`是用来设置输出流和输入流的读写指针位置的函数。
`seekp`和`seekg`都需要两个参数:
1. 第一个参数是偏移量,表示要移动的字节数。
2. 第二个参数是一个标志,用于指定移动位置的基准点。可以使用`ios::beg`表示从文件或缓冲区开头开始,使用`ios::cur`表示当前位置,使用`ios::end`表示从文件或缓冲区末尾开始。
下面是`seekp`和`seekg`的使用示例:
```cpp
#include <iostream>
#include <fstream>
using namespace std;
int main() {
// 创建一个文件输出流
ofstream out("example.txt");
// 向文件写入一些数据
out << "Hello, World!" << endl;
// 设置输出流的写指针到文件开头
out.seekp(0, ios::beg);
// 向文件写入另外一些数据
out << "This is a test." << endl;
// 关闭输出流
out.close();
// 创建一个文件输入流
ifstream in("example.txt");
// 设置输入流的读指针到文件末尾
in.seekg(0, ios::end);
// 获取文件大小
int size = in.tellg();
// 关闭输入流
in.close();
// 输出文件大小
cout << "File size: " << size << " bytes." << endl;
return 0;
}
```
在上面的示例中,我们创建了一个文件输出流,并向文件写入一些数据。然后,我们使用`seekp`将输出流的写指针设置到文件开头的位置,接着向文件写入另外一些数据。最后,我们关闭输出流。
接下来,我们创建了一个文件输入流,并使用`seekg`将输入流的读指针设置到文件末尾的位置。然后,我们使用`tellg`函数获取文件大小,并关闭输入流。最后,我们输出文件大小。
需要注意的是,`tellg`函数返回的是当前读指针的位置,如果我们没有使用`seekg`函数设置读指针的位置,那么`tellg`返回的值就是当前读指针相对于文件开头的偏移量。