std::basic_istream<CharT,Traits>:: seekg
|
basic_istream
&
seekg
(
pos_type pos
)
;
|
(1) | |
|
basic_istream
&
seekg
(
off_type off,
std::
ios_base
::
seekdir
dir
)
;
|
(2) | |
设置当前关联的
streambuf
对象的输入位置指示器。
在执行任何其他操作之前,
seekg
会清除
eofbit
。
|
(since C++11) |
seekg
的行为类似于
非格式化输入函数
,但不会影响
gcount()
。在构造并检查哨兵对象后,
目录 |
参数
| pos | - | 设置输入位置指示器的绝对位置 | ||||||||
| off | - | 设置输入位置指示器的相对位置(正值或负值) | ||||||||
| dir | - |
定义应用相对偏移的基准位置。可以是以下常量之一:
|
返回值
* this
异常
如果内部操作抛出异常,该异常会被捕获并设置
badbit
。如果为
badbit
设置了
exceptions()
,则异常会被重新抛出。
注释
seekg(n) 不一定等同于 seekg(n, ios::beg) 。例如, std:: basic_ifstream 要求绝对位置 n 必须来自 tellg() 。
示例
#include <iostream> #include <sstream> #include <string> int main() { std::string str = "Hello, world"; std::istringstream in(str); std::string word1, word2; in >> word1; in.seekg(0); // rewind in >> word2; std::cout << "word1 = " << word1 << '\n' << "word2 = " << word2 << '\n'; }
输出:
word1 = Hello, word2 = Hello,
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的C++标准。
| 缺陷报告 | 适用标准 | 发布时行为 | 正确行为 |
|---|---|---|---|
| LWG 129 | C++98 | 无法指示失败状态 |
失败时设置
failbit
|
| LWG 136 | C++98 |
seekg
可能设置输出流
|
仅设置输入流 |
| LWG 537 | C++98 |
off
的类型为
off_type&
|
修正为
off_type
|
参见
|
返回输入位置指示器
(公开成员函数) |
|
|
返回输出位置指示器
(
std::basic_ostream<CharT,Traits>
的公开成员函数)
|
|
|
设置输出位置指示器
(
std::basic_ostream<CharT,Traits>
的公开成员函数)
|
|
|
调用
seekpos
(
)
(
std::basic_streambuf<CharT,Traits>
的公开成员函数)
|
|
|
[virtual]
|
使用绝对寻址重新定位文件位置
(
std::basic_filebuf<CharT,Traits>
的虚受保护成员函数)
|
|
[virtual]
|
使用绝对寻址重新定位输入序列、输出序列或两者中的下一个指针
(
std::basic_stringbuf<CharT,Traits,Allocator>
的虚受保护成员函数)
|
|
[virtual]
|
使用绝对寻址重新定位输入序列、输出序列或两者中的下一个指针
(
std::strstreambuf
的虚受保护成员函数)
|
|
调用
seekoff
(
)
(
std::basic_streambuf<CharT,Traits>
的公开成员函数)
|
|
|
[virtual]
|
使用相对寻址重新定位文件位置
(
std::basic_filebuf<CharT,Traits>
的虚受保护成员函数)
|
|
[virtual]
|
使用相对寻址重新定位输入序列、输出序列或两者中的下一个指针
(
std::basic_stringbuf<CharT,Traits,Allocator>
的虚受保护成员函数)
|
|
[virtual]
|
使用相对寻址重新定位输入序列、输出序列或两者中的下一个指针
(
std::strstreambuf
的虚受保护成员函数)
|