Aracılığıyla paylaş


ios_base::register_callback

Geri çağırma işlevi belirtir.

void register_callback(
   event_callback pfn,
   int idx
);

Parametreler

  • pfn
    Geri çağırma işlevi için işaretçi.

  • idx
    Kullanıcı tanımlı bir sayı.

Notlar

Üye işlevi çifti iter {pfn, idx} saklı geri çağrı yığını üzerine geri çağırma yığınını.Geri arama olayı ev bildirilir, İşlevler verilir, ters sırada kayıt defterinin ifade (*pfn) (ev,* Bu,idx).

Örnek

// ios_base_register_callback.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>

using namespace std;

void callback1( ios_base::event e, ios_base& stream, int arg ) 
{
   cout << "in callback1" << endl;
   switch ( e ) 
   {
      case ios_base::erase_event:
         cout << "an erase event" << endl;
         break;
      case ios_base::imbue_event:
         cout << "an imbue event" << endl;
         break;
      case ios_base::copyfmt_event:
         cout << "an copyfmt event" << endl;
         break;
   };
}

void callback2( ios_base::event e, ios_base& stream, int arg ) 
{
   cout << "in callback2" << endl;
   switch ( e ) 
   {
      case ios_base::erase_event:
         cout << "an erase event" << endl;
         break;
      case ios_base::imbue_event:
         cout << "an imbue event" << endl;
         break;
      case ios_base::copyfmt_event:
         cout << "an copyfmt event" << endl;
         break;
   };
}

int main( ) 
{
   // Make sure the imbue will not throw an exception
   // assert( setlocale( LC_ALL, "german" )!=NULL );

   cout.register_callback( callback1, 0 );
   cin.register_callback( callback2, 0 );

   try 
   {
      // If no exception because the locale's not found,
      // generate an imbue_event on callback1
      cout.imbue(locale("german"));
   }
   catch(...) 
   {
      cout << "exception" << endl;
   }

   // This will
   // (1) erase_event on callback1
   // (2) copyfmt_event on callback2
   cout.copyfmt(cin);

   // We get two erase events from callback2 at the end because 
// both cin and cout have callback2 registered when cin and cout
   // are destroyed at the end of program.
}
  

Gereksinimler

Başlık: <ios>

Namespace: std

Ayrıca bkz.

Başvuru

ios_base Class

iostream programlama

iostreams kuralları