Rogue Wave バナー
前へマニュアルの先頭へ目次次へ

16.2 例

プログラムでは、次のような特定のストリームにコールバック関数を登録することができます。

// コールバック関数
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_eventios_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 月