c-类的自定义操纵器
作者:互联网
我正在尝试编写带有参数的流操纵器.
我上了3个整数的CDate(年,月,日)课程.
所以我需要使操纵器date_format(const char *).
例如:
CDate a(2006, 5, 15);
cout <<"DATE IS : " << date_format("%Y-hello-%d-world-%m-something-%d%d") << a;
输出将是:
DATE IS : 2006-hello-15-world-5-something-1515
猜猜我需要用那个
ios_base & dummy_date_format_manipulator ( ios_base & x )
{
return x;
}
ios_base & ( * ( date_format ( const char * fmt ) ) )( ios_base & x )
{
return dummy_date_format_manipulator;
}
但我不知道如何.
解决方法:
您可以为此使用pword数组.
C中的每个iostream都有两个与之关联的数组.
ios_base::iword - array of ints
ios_base::pword - array of void* pointers
您可以在其中存储自己的数据.要获得一个索引,该索引引用所有iword和pword数组中的空元素,您应该使用函数std :: ios_base :: xalloc().它返回int,可以用作* word中的唯一索引.
您应该在启动时获得一次该索引,然后将其用于带有* word的所有操作.
然后编写自己的manip如下所示:
接收对ios_base对象的引用和对格式字符串的指针的操纵器函数,只需将该指针存储在pword中
iosObject.pword(index_from_xalloc) = formatString
然后重载的运算符<< (>)以相同的方式从iostream对象获取格式字符串.之后,您只需进行引用格式的转换即可.
标签:manipulators,c 来源: https://codeday.me/bug/20191012/1903573.html