我正在尝试编写一个带参数的流操纵器。
我有 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
and pword
你应该使用函数的数组std::ios_base::xalloc()
。它返回 int,您可以将其用作唯一索引*word
。
您应该在启动时获取该索引一次,然后将其用于所有操作*word
.
然后编写您自己的 manip 将如下所示:
操纵器函数,接收对ios_base
对象和指向格式字符串的指针,只需将该指针存储在pword
iosObject.pword(index_from_xalloc) = formatString
然后重载运算符<<
(>>
) 以同样的方式从 iostream 对象获取格式字符串。之后,您只需参考格式进行转换即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)