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

