名前空間
変種
操作

std::basic_istream<CharT,Traits>::seekg

From cppreference.com
< cpp‎ | io‎ | basic istream
 
 
 
 
basic_istream& seekg( pos_type pos );
(1)
basic_istream& seekg( off_type off, std::ios_base::seekdir dir );
(2)

現在の関連付けられているstreambufオブジェクトの入力位置指示子を設定します。

seekgは、まずeofbitをクリアします。 (C++11以降)

seekgは、gcount()に影響しないことを除いて、UnformattedInputFunctionとして動作します。sentinelオブジェクトを構築してチェックした後、

1) fail() != true の場合、入力位置指示子を絶対値(ファイルの先頭からの相対)posに設定します。具体的には、rdbuf()->pubseekpos(pos, std::ios_base::in) を実行します(pubseekposは、具体的にはbasic_filebuf::seekposbasic_stringbuf::seekpos、またはstrstreambuf::seekposなどの特定のバッファのseekposを呼び出します)。失敗した場合は、setstate(std::ios_base::failbit) を呼び出します。
2) fail() != true の場合、入力位置指示子をdirで定義された位置を基準とした相対位置offに設定します。具体的には、rdbuf()->pubseekoff(off, dir, std::ios_base::in) を実行します。失敗した場合は、setstate(std::ios_base::failbit) を呼び出します。

目次

[編集] パラメータ

pos - 入力位置指示子を設定する絶対位置
off - 入力位置指示子を設定する相対位置(正または負)
dir - 相対オフセットを適用する基準位置を定義します。次のいずれかの定数を使用できます。
Constant 説明
beg ストリームの先頭
end ストリームの末尾
cur ストリーム位置指示子の現在の位置

[編集] 戻り値

*this

[編集] 例外

failure: エラーが発生した場合(エラー状態フラグが goodbit ではない)で、exceptions() がその状態に対してスローするように設定されている場合。

内部操作が例外をスローした場合、それはキャッチされ、badbit が設定されます。exceptions()badbit に対して設定されている場合、例外は再スローされます。

[編集] 注釈

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++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
LWG 129 C++98 失敗を示す方法がなかった 失敗時にfailbitを設定する
LWG 136 C++98 seekgが出力ストリームを設定する可能性があった 入力ストリームのみを設定する
LWG 537 C++98 offの型がoff_type&だった off_typeに修正された

[編集] 関連項目

入力位置インジケータを返す
(public member function) [編集]
出力位置インジケータを返す
(std::basic_ostream<CharT,Traits> の public メンバ関数) [編集]
出力位置インジケータを設定する
(std::basic_ostream<CharT,Traits> の public メンバ関数) [編集]
seekpos() を呼び出す
(std::basic_streambuf<CharT,Traits> の public メンバ関数) [編集]
[virtual]
絶対アドレスを使用してファイル位置を再配置します
(virtual protected member function of std::basic_filebuf<CharT,Traits>) [編集]
[virtual]
入力シーケンス、出力シーケンス、またはその両方で、絶対アドレス指定を使用して次のポインタを再配置する
(virtual protected member function of std::basic_stringbuf<CharT,Traits,Allocator>) [編集]
[virtual]
入力シーケンス、出力シーケンス、またはその両方で、絶対アドレス指定を使用して次のポインタを再配置する
(virtual protected member function of std::strstreambuf) [編集]
seekoff() を呼び出す
(std::basic_streambuf<CharT,Traits> の public メンバ関数) [編集]
[virtual]
相対アドレスを使用してファイル位置を再配置します
(virtual protected member function of std::basic_filebuf<CharT,Traits>) [編集]
[virtual]
入力シーケンス、出力シーケンス、またはその両方で、相対アドレス指定を使用して次のポインタを再配置する
(virtual protected member function of std::basic_stringbuf<CharT,Traits,Allocator>) [編集]
[virtual]
入力シーケンス、出力シーケンス、またはその両方で、相対アドレス指定を使用して次のポインタを再配置する
(virtual protected member function of std::strstreambuf) [編集]
English 日本語 中文(简体) 中文(繁體)