3.4.5 代码分析(1)
由于TimeStamp类使用了在头文件ctime中声明的两个顶层函数time和ctime,我们首先从这两个函数的分析开始。函数time的原型为
数据类型time_t是一种算术类型,可以是如long这样的标准算术类型,或是适合于某特定系统的非标准算术类型。总而言之,time函数返回一个代表当前时间的值。传给time函数的实参可以是某个time_t类型变量的地址,也可以是0 (NULL)。如果传给time函数一个time_t类型变量的地址,time函数将当前时间保存到这个变量中。
函数ctime的原型为
ctime函数接收一个time_t类型变量的地址。通常,我们首先调用time来设置一个time_t类型的变量,然后将该变量的地址传给ctime。ctime返回一个C风格字符串。例如,代码段
的输出为
ctime函数返回的字符串实际上是
其最后的字符是一个换行符\n。这个字符串通常采用如下的格式:
最前面三个字符表示星期几,如Tue。
第四个字符是一个空格。
从第五个字符到第七个字符表示月份,如Jul。
第八个字符是一个空格。
第九个字符和第十个字符表示是该月的第几天,如21。
第十一个字符是一个空格。
第十二和十三个字符表示小时,从00(午夜)到23(11 P.M.)。
第十四个字符是一个冒号。
第十五和第十六个字符表示分钟,从00到59。
第十七个字符是一个冒号。
第十八和十九个字符表示秒,从00到59。
第二十个字符是一个空格。
第二十一到第二十四个字符表示年份,如1999。
第二十五个字符是一个换行符。
第二十六个字符是一个null结束符。
借助以上信息,我们可从所返回的字符串中提取任何需要的部分。例如,TimeStamp类中用于获取年份的getYear函数为
getYear函数调用私有成员函数extract,并传给它两个变量,这两个变量指出希望获取的子串在原字符串中的起始位置及子串的长度。extract函数定义为: