std::basic_ostream<CharT,Traits>:: seekp
From cppreference.net
<
cpp
|
io
|
basic ostream
|
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 | - |
相対オフセットを適用する基準位置を定義します。以下の定数のいずれかです:
|
戻り値
* this
例外
例
このコードを実行
#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>
の公開メンバ関数)
|