std::basic_ostream<CharT,Traits>::sentry
class sentry; |
||
クラス basic_ostream::sentry のオブジェクトは、出力を行う (書式付きと書式なしどちらも) std::basic_ostream のメンバ関数それぞれの先頭で、ローカルスコープ内で構築されます。 このコンストラクタは出力ストリームを準備します。 ストリームがすでに fail 状態かどうか確認し、 tie() されている出力ストリームをフラッシュし、必要であればその他の処理系定義の処理を行います。 また、処理系定義のクリーンアップや、必要であれば出力ストリームのフラッシュを、出力中に例外が投げられた場合にも行われることが保証できるように、デストラクタで行います。
メンバ関数
| sentry オブジェクトを構築します。 すべての準備処理はここで行われます (パブリックメンバ関数) | |
| 必要であれば、書式付き出力後または例外後のストリームオブジェクトの後処理を行います (パブリックメンバ関数) | |
operator= |
代入演算子は削除されています (パブリックメンバ関数) |
| ストリームオブジェクトの準備に成功したかどうか調べます (パブリックメンバ関数) |
std::basic_ostream::sentry::sentry
<tbody> </tbody> explicit sentry( std::basic_ostream<CharT,Traits>& os ); |
||
書式付き出力のためにストリームを準備します。
os.good() が false であれば、戻ります。 そうでなければ、 os.tie() がヌルポインタでない場合は出力シーケンスを外部ストリームと同期するために os.tie()->flush() を呼びます。 準備中、コンストラクタは setstate(failbit) を呼ぶ場合があります (それによって std::ios_base::failure が投げられる場合があります)。
準備が完了した後、 os.good() == true であれば、以後の operator bool の呼び出しは true を返します。
引数
| os | - | 準備する出力ストリーム |
例外
ファイル終端の状況が発生した場合は std::ios_base::failure。
std::basic_ostream::sentry::~sentry
<tbody> </tbody> ~sentry(); |
||
(os.flags() & std::ios_base::unitbuf) && !std::uncaught_exception() && os.good()) が true の場合は os.rdbuf()->pubsync() を呼びます。 その関数が -1 を返した場合は、例外を伝播せずに os.rdstate() の badbit をセットします。
std::basic_ostream::sentry::operator bool
<tbody> </tbody> explicit operator bool() const; |
||
出力ストリームの準備が成功したかどうか調べます。
引数
(なし)
戻り値
出力ストリームの準備が成功した場合は true、そうでなければ false。
例
#include <iostream>
#include <sstream>
struct Foo
{
char n[6];
};
std::ostream& operator<<(std::ostream& os, Foo& f)
{
std::ostream::sentry s(os);
if (s) {
os.write(f.n, 5);
}
return os;
}
int main()
{
Foo f = { "abcde" };
std::cout << f << '\n';
}
出力:
abcde
関連項目
| 書式付きデータを挿入します (パブリックメンバ関数) |