12.4.5  类time

12.4.5time

模板time_get<chart,InputIterator>和time_put<chart,OutputIterator>提供了日期和时间的格式和分解方法。所有类time_get和类time_put的成员函数均可应用于实例化。它们的成员使用ios_base&,ios_base::iostate&和fill参数,使用类ctype决定格式的细节。

1.类模板time_get< >

978-7-111-51399-5-Chapter12-158.jpg

978-7-111-51399-5-Chapter12-159.jpg

time_get()用于分解字符序列,从中抽出时间和日期的部件,并放入tm结构中。每一个get成员函数分解一种格式,作为相应的格式标识符,用于time_put<>::put()函数中。如果被分解的序列匹配正确的格式,相应的tm结构成员参数被设置成用于产生序列的值;否则,或者汇报一个错误,或者设置成一个不确定的值。

(1)time_get< >的成员

978-7-111-51399-5-Chapter12-160.jpg

函数的作用是使用刻面返回日期的排序方式。

978-7-111-51399-5-Chapter12-161.jpg

函数的作用是将表示时间的字符串放入tm结构中。

978-7-111-51399-5-Chapter12-162.jpg

函数的作用是将表示日期的字符串放入tm结构中。

978-7-111-51399-5-Chapter12-163.jpg

函数的作用是将表示日期的字符串放入tm结构中。

978-7-111-51399-5-Chapter12-164.jpg

函数的作用是将表示年的字符串放入tm结构中。

(2)time_get< >的虚函数

978-7-111-51399-5-Chapter12-165.jpg

函数返回一个枚举值,该枚举值表明表达日期的组件的优先顺序。该日期格式主要包括日期、月和年。

978-7-111-51399-5-Chapter12-166.jpg

函数的作用是从[s,end]内获取字符串,并转换至tm结构中。函数返回迭代器指针。该指针指向最后一个字符前面。

978-7-111-51399-5-Chapter12-167.jpg

函数的作用是从指定的缓冲区抽取日期字符串,并转换至tm结构中。

978-7-111-51399-5-Chapter12-168.jpg

函数的作用是从缓冲区中抽取合适的日期字符串,并转换至tm结构中。

978-7-111-51399-5-Chapter12-169.jpg

函数的作用是从缓冲区抽取合适的字符,并转换至tm结构中。

2.类模板time_get_byname

模板类time_get_byname的声明形式如下:

978-7-111-51399-5-Chapter12-170.jpg

978-7-111-51399-5-Chapter12-171.jpg

3.模板类time_put

978-7-111-51399-5-Chapter12-172.jpg

(1)time_put类成员

978-7-111-51399-5-Chapter12-173.jpg

函数针对[pattern,pat_end]确定的字符序列,识别格式字符。格式字符序列的每一个字符被写入到序列s(s是迭代器)中,并且识别出的每一个格式序列均会导致调用do_put()。格式化元素和其他字符在顺序输出时均是交叉存取的。按格式显示序列时,会转换字符c为char类型的值,类似调用narrow()。此处ct是一个对于ctype<charT>的引用,此引用是通过str.getloc()获取的。每个序列的第一个字符等于“%”,并且格式标识符是通过strftime()函数定义的。如果没有可变字符输出,mod是0。对于每个已识别的有效格式序列,需要调用do_put(s,str,fill,t,spec,mod)。

(2)time_put虚函数

978-7-111-51399-5-Chapter12-174.jpg

函数的作用是将参数t的内容按格式化参数format处理,并将之放在输出序列s中。格式是通过format和modifier来控制的。函数返回的迭代器指向最后一个字符之后。

4.模板类time_put_byname

模板类time_put_byname的声明形式为:

978-7-111-51399-5-Chapter12-175.jpg

下面用例12-12来说明模板类time中time_base、time_get和time_put的使用方法。

例12-12

978-7-111-51399-5-Chapter12-176.jpg

978-7-111-51399-5-Chapter12-177.jpg

978-7-111-51399-5-Chapter12-178.jpg

例12-12的执行结果为:

978-7-111-51399-5-Chapter12-179.jpg

978-7-111-51399-5-Chapter12-180.jpg