std::clog, std::wclog
From cppreference.com
| ヘッダ <iostream> で定義 |
||
| extern std::ostream clog; |
(1) | |
| extern std::wostream wclog; |
(2) | |
グローバルオブジェクトstd::clogおよびstd::wclogは、標準C出力ストリームstderrに関連付けられた、実装定義型(std::streambufから派生)のストリームバッファへの出力を制御しますが、std::cerr/std::wcerrとは異なり、これらのストリームは自動的にフラッシュされず、coutはこれらのストリームに自動的にtie()されていません。
これらのオブジェクトは、型 std::ios_base::Init のオブジェクトが最初に構築される際、またはそれ以前に初期化されることが保証されており、順序付けられた初期化を持つ静的オブジェクトのコンストラクタとデストラクタで使用可能です (オブジェクトが定義される前に <iostream> がインクルードされている限り)。
sync_with_stdio(false)が発行されていない限り、フォーマット済みおよび非フォーマット済み出力の両方について、複数のスレッドからこれらのオブジェクトに同時にアクセスしても安全です。
[編集] 注記
名前の「c」は「character」(stroustrup.com FAQ)を指します。clogは「character log」、wclogは「wide character log」を意味します。
[編集] 例
このコードを実行
#include <iostream> struct Foo { int n; Foo() { std::clog << "constructor\n"; } ~Foo() { std::clog << "destructor\n"; } }; Foo f; // static object int main() { std::clog << "main function\n"; }
出力
constructor main function destructor
[編集] 関連項目
| 標準ストリームオブジェクトを初期化する ( std::ios_base の public メンバクラス) | |
| 標準Cエラー ストリーム stderr にバッファリングなしで書き込む (グローバルオブジェクト) | |
| 標準C出力ストリーム stdout に書き込む (グローバルオブジェクト) | |
| 入力ストリームに関連付けられた FILE* 型の式 出力ストリームに関連付けられた FILE* 型の式 エラー出力ストリームに関連付けられた FILE* 型の式 (マクロ定数) |