std::stringstream类的seekg完整用法
时间: 2023-08-04 17:06:45 浏览: 115
`std::stringstream` 的 `seekg` 方法的完整用法如下:
```cpp
std::istream& seekg (std::streampos pos);
std::istream& seekg (std::streamoff off, std::ios_base::seekdir way);
```
其中:
- `pos`:表示要设置的绝对位置,类型为 `std::streampos`。
- `off`:表示相对于 `way` 参数指定的位置的偏移量,类型为 `std::streamoff`。
- `way`:表示偏移量相对于哪个位置进行计算,可选值有 `std::ios_base::beg`(相对于流的起始位置)、`std::ios_base::cur`(相对于当前位置)和 `std::ios_base::end`(相对于流的末尾位置)。
具体示例如下:
```cpp
#include <iostream>
#include <sstream>
int main()
{
std::stringstream ss("Hello, World!");
// 设置输入位置指针到第7个字符处
ss.seekg(6);
// 从第7个字符处开始读取数据
std::string str;
ss >> str;
std::cout << str << std::endl; // 输出 "World!"
// 设置输入位置指针到第2个字符处
ss.seekg(std::streampos(1));
// 从第2个字符处开始读取数据
ss >> str;
std::cout << str << std::endl; // 输出 "e"
// 设置输入位置指针到倒数第6个字符处
ss.seekg(-6, std::ios_base::end);
// 从倒数第6个字符处开始读取数据
ss >> str;
std::cout << str << std::endl; // 输出 "Hello,"
return 0;
}
```
在上述示例中,我们首先使用 `seekg` 方法将输入位置指针移动到第7个字符处,然后从第7个字符处开始读取数据。接着,我们使用 `seekg` 方法将输入位置指针移动到第2个字符处,并从第2个字符处开始读取数据。最后,我们使用 `seekg` 方法将输入位置指针移动到倒数第6个字符处,并从倒数第6个字符处开始读取数据。
需要注意的是,`std::streampos` 和 `std::streamoff` 都是整数类型,但是它们的含义不同。`std::streampos` 表示文件或流的一个位置,可以通过 `tellg` 方法获取当前位置。`std::streamoff` 表示相对于某个位置的偏移量,可以是正数或负数。在使用 `seekg` 方法时,需要根据具体的场景选择合适的参数类型和参数值。
阅读全文