プログラムでは、次のような特定のストリームにコールバック関数を登録することができます。
// コールバック関数 void show_event(ios_base::event e, iosbase& io, int index) { if (e == ios_base::imbue_event) cout << "imbue called" << endl; else if (e == ios_base::erase_event) cout << "stream destroyed" << endl; else cout << "cpyfmt called" << endl; } ostringstream s; s.register_callback(show_event,0); //1 s.imbue(locale::global()); //2
//1 | ストリームの削除、新しいロケールの組み込み、 cpyfmt の呼び出しによるコールバックの起動のいずれかが実行されると、ios_base::erase_event、ios_base::imbue_event、または ios_base::copyfmt_event を最初の引数として、関数 show_event が呼び出されます。 |
//2 | これによって、show_event
が呼び出されます。最初の引数は、ios_base::imbue_event;
です。2 番目の引数は、イベントの発生したストリームに対する参照で、この例では
s です。3 番目の引数は、常に register_callback
の呼び出しに対するインデックスで、この例では 0
です。 複数の関数を登録すると、登録とは逆の順序で呼び出されます。 |
ユーザー定義ストリームの、挿入子におけるコールバック関数の使用方法についての詳細な例は、5.9.2 節を参照してください。
Copyright (c) 1998, Rogue Wave Software, Inc.
このマニュアルに関する誤りのご指摘やご質問は、電子メールにてお送りください。
OEM リリース, 1998 年 6 月