c++ fstream设置当前读写位置
时间: 2023-08-07 20:07:47 浏览: 311
可以使用 `seekg` 和 `seekp` 函数设置当前读写位置。
`seekg` 用于设置输入流的读取位置,其函数原型如下:
```c++
istream& seekg (streampos pos);
istream& seekg (streamoff off, ios_base::seekdir way);
```
其中,`pos` 为流位置的类型 `streampos`,表示要将读取位置设置为从流开始位置到 `pos` 的偏移量。
`off` 为偏移量的类型 `streamoff`,表示要将读取位置向前或向后移动的字节数, `way` 为偏移方向的类型 `ios_base::seekdir`,表示从哪个位置开始偏移。常用的偏移方向有三种:
- `ios_base::beg`,从流的起始位置开始偏移。
- `ios_base::cur`,从当前读取位置开始偏移。
- `ios_base::end`,从流的末尾位置开始偏移。
`seekp` 用于设置输出流的写入位置,其函数原型与 `seekg` 类似。
举个例子,下面的代码将输入流的读取位置设置为第二个字符处:
```c++
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream file("example.txt");
if (!file.is_open()) {
cout << "failed to open file." << endl;
return 1;
}
file.seekg(1); // 设置读取位置为第二个字符处
char c;
file >> c;
cout << "read char: " << c << endl;
file.close();
return 0;
}
```
阅读全文