C++ ios 库 - Register Callback
描述
用于注册事件回调函数。 将 fn 注册为回调函数,以在流事件发生时以 index 作为参数自动调用。
如果注册了多个回调函数,它们都被调用,按照注册的相反顺序。
回调函数应为可转换为 event_callback 的类型。 它被一个相当于下面所示的表达式调用 −
void register_callback (event_callback fn, int index);
声明
以下是 ios_base::register_callback 函数的声明。
void*& pword (int idx);
参数
fn − 指向要调用的函数的指针。
index − 整数值作为参数传递给回调函数。
返回值
none
异常
Basic guarantee − 如果抛出异常,则流处于有效状态。
数据竞争
它修改流对象。
示例
在下面的示例中解释了 ios_base::register_callback 函数。
#include <iostream> #include <fstream> void testfn (std::ios::event ev, std::ios_base& stream, int index) { switch (ev){ case stream.copyfmt_event: std::cout << "copyfmt_event\n"; break; case stream.imbue_event: std::cout << "imbue_event\n"; break; case stream.erase_event: std::cout << "erase_event\n"; break; } } int main () { std::ofstream filestr; filestr.register_callback (testfn,0); filestr.imbue (std::cout.getloc()); return 0; }
让我们编译并运行上面的程序,这将产生以下结果 −
imbue_event erase_event