Namespaces
Variants

std::basic_ostream<CharT,Traits>:: seekp

From cppreference.net
basic_ostream & seekp ( pos_type pos ) ;
(1)
basic_ostream & seekp ( off_type off, std:: ios_base :: seekdir dir ) ;
(2)

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

UnformattedOutputFunction として振る舞う(実際の出力は行わない点を除く)。セントリオブジェクトを構築・チェックした後、

(C++11以降)
1) if fail ( ) ! = true の場合、出力位置指示子を絶対値(ファイルの先頭からの相対値) pos に設定します。これは rdbuf ( ) - > pubseekpos ( pos, std:: ios_base :: out ) を呼び出すことで行われます。失敗した場合、 setstate ( std:: ios_base :: failbit ) を呼び出します。
2) if fail ( ) ! = true の場合、出力位置指示子を dir からの相対位置 off に設定する( rdbuf ( ) - > pubseekoff ( off, dir, std:: ios_base :: out ) を呼び出して)。失敗した場合は、 setstate ( std:: ios_base :: failbit ) を呼び出す。

目次

パラメータ

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

戻り値

* this

例外

1,2) 失敗の場合、 exceptions ( ) & failbit ! = 0 が設定されている場合、 std::ios_base::failure をスローする可能性がある。

#include <iostream>
#include <sstream>
int main()
{
    std::ostringstream os("hello, world");
    os.seekp(7);
    os << 'W';
    os.seekp(0, std::ios_base::end);
    os << '!';
    os.seekp(0);
    os << 'H';
    std::cout << os.str() << '\n';
}

出力:

Hello, World!

不具合報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 129 C++98 失敗を示す方法がなかった 失敗時に failbit を設定する
LWG 136 C++98 seekp が入力ストリームを設定する可能性があった 出力ストリームのみを設定する
LWG 537 C++98 1. pos の型が pos_type& であった
2. off の型が off_type& であった
1. pos_type に修正
2. off_type に修正
LWG 2341 C++98 オーバーロード (2) に対する LWG issue 129 の解決が削除されていた 復元された

関連項目

出力位置指示子を返す
(公開メンバ関数)
入力位置指示子を返す
( std::basic_istream<CharT,Traits> の公開メンバ関数)
入力位置指示子を設定する
( std::basic_istream<CharT,Traits> の公開メンバ関数)