time_get 类

此类模板描述可用作区域设置 facet 的对象,此对象用于控制 CharType 类型序列到时间值的转换。

语法

template <class CharType,
    class InputIterator = istreambuf_iterator<CharType>>
class time_get : public time_base;

参数

CharType
在程序中用于对字符进行编码的类型。

InputIterator
从中读取时间值的迭代器。

备注

对于任何区域设置 facet,静态对象 ID 的初始存储值为零。 首次尝试访问其存储值后,将在 ID 中存储唯一正值。

构造函数

构造函数 说明
time_get time_get 类型的对象的构造函数。

Typedef

类型名称 说明
char_type 一种类型,此类型用于描述区域设置使用的字符。
iter_type 一种类型,此类型描述输入迭代器。

成员函数

成员函数 说明
date_order 返回 facet 使用的日期顺序。
do_date_order 为返回 facet 使用的日期顺序而调用的受保护虚拟成员函数。
do_get 读取字符数据并转换为时间值。
do_get_date 一种受保护的虚拟成员函数,通过调用此函数可分析作为 xstrftime 说明符所生成日期的字符串。
do_get_monthname 为分析作为月份名称的字符串而调用的受保护虚拟函数。
do_get_time 一种受保护的虚拟成员函数,通过调用此函数可分析作为 Xstrftime 说明符所生成日期的字符串。
do_get_weekday 为分析作为周日期名称的字符串而调用的受保护虚拟成员函数。
do_get_year 为分析作为年份名称的字符串而调用的受保护虚拟成员函数。
get 从字符数据源读取,并将此数据转换为存储在时间结构中的时间。
get_date 分析作为 xstrftime 说明符所生成日期的字符串。
get_monthname 分析作为月份名称的字符串。
get_time 分析作为 Xstrftime 说明符所生成日期的字符串。
get_weekday 分析作为周日期名称的字符串。
get_year 分析作为年份名称的字符串。

要求

标头:<locale>

命名空间: std

time_get::char_type

一种类型,此类型用于描述区域设置使用的字符。

typedef CharType char_type;

备注

该类型是模板参数 CharType 的同义词。

time_get::date_order

返回 facet 使用的日期顺序。

dateorder date_order() const;

返回值

facet 使用的日期顺序。

注解

此成员函数返回 do_date_order

示例

// time_get_date_order.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>
#include <time.h>
using namespace std;
void po( char *p )
{
   locale loc( p );

   time_get <char>::dateorder order = use_facet <time_get <char> >( loc ).date_order ( );
   cout << loc.name( );
   switch (order){
      case time_base::dmy: cout << "(day, month, year)" << endl;
      break;
      case time_base::mdy: cout << "(month, day, year)" << endl;
      break;
      case time_base::ydm: cout << "(year, day, month)" << endl;
      break;
      case time_base::ymd: cout << "(year, month, day)"<< endl;
      break;
      case time_base::no_order: cout << "(no_order)"<< endl;
      break;
   }
}

int main( )
{
   po( "C" );
   po( "german" );
   po( "English_Britain" );
}
C(month, day, year)
German_Germany.1252(day, month, year)
English_United Kingdom.1252(day, month, year)

time_get::do_date_order

为返回 facet 使用的日期顺序而调用的受保护虚拟成员函数。

virtual dateorder do_date_order() const;

返回值

facet 使用的日期顺序。

备注

受保护的虚拟成员函数返回类型为 time_base::dateorder 的值,该值描述与 do_get_date 匹配的日期组件的顺序。 在此实现中,值为 time_base::mdy,对应为 12 月 2 日,1979 年。

示例

请参阅 date_order 示例,它调用 do_date_order

time_get::do_get

读取字符数据并转换为时间值。 接受一个转换说明符和修饰符。

virtual iter_type
    do_get(
iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    tm* ptm,
    char fmt,
    char mod) const;

参数

first
一个输入迭代器,它指示要转换的序列的开始位置。

last
一个输入迭代器,它指示序列的结束位置。

iosbase
一个流对象。

State
iosbase 中的字段,其中设置了相应的位掩码元素来指示错误。

ptm
指向要存储时间的时间结构的指针。

fmt
一个转换说明符字符。

mod
一个可选修饰符字符。

返回值

返回一个迭代器,该迭代器指定第一个未经转换的元素。 转换失败会在 state 中设置 ios_base::failbit 并返回 first

备注

虚拟成员函数将转换并跳过 [first, last) 范围中的一个或多个输入元素,以便确定存储在 *pt 的一个或多个成员中的值。 转换失败会在 state 中设置 ios_base::failbit 并返回 first。 否则,该函数返回指定第一个未转换元素的迭代器。

转换说明符是:

'a''A' - 与 time_get::get_weekday 的行为相同。

'b''B''h' -- 与 time_get::get_monthname 的行为相同。

'c' -- 与 "%b %d %H : %M : %S %Y" 的行为相同。

'C' -- 将 [0,99] 范围内的一个十进制输入字段转换为值 val,并将 val * 100 - 1900 存储在 pt-&tm_year 中。

'd''e' -- 转换 [1,31] 范围内的一个十进制输入字段,并且其将值存储在 pt-&tm_mday 中。

'D' -- 与 "%m / %d / %y" 的行为相同。

'H' -- 转换 [0,23] 范围内的一个十进制输入字段,并将其值存储在 pt-&tm_hour 中。

'I' -- 转换 [0,11] 范围内的一个十进制输入字段,并将其值存储在 pt-&tm_hour 中。

'j' -- 转换 [1,366] 范围内的一个十进制输入字段,并将其值存储在 pt-&tm_yday 中。

'm' -- 将 [1,12] 范围内的一个十进制输入字段转换为值 val,存储 val - 1,并将其值存储在 pt-&tm_mon 中。

'M' -- 转换 [0,59] 范围内的一个十进制输入字段,并将其值存储在 pt-&tm_min 中。

'n''t' -- 与 " " 的行为相同。

'p' -- 将“AM”或“am”转换为零,将“PM”或“pm”转换为 12,并将此值添加到 pt-&tm_hour

'r' -- 与 "%I : %M : %S %p" 的行为相同。

'R' -- 与 "%H %M" 的行为相同。

'S' -- 转换 [0,59] 范围内的一个十进制输入字段,并将其值存储在 pt-&tm_sec 中。

'T''X' -- 与 "%H : %M : S" 的行为相同。

'U' -- 转换 [0,53] 范围内的一个十进制输入字段,并将其值存储在 pt-&tm_yday 中。

'w' -- 转换 [0,6] 范围内的一个十进制输入字段,并将其值存储在 pt-&tm_wday 中。

'W' -- 转换 [0,53] 范围内的一个十进制输入字段,并将其值存储在 pt-&tm_yday 中。

'x' -- 与 "%d / %m / %y" 的行为相同。

'y' -- 将 [0,99] 范围内的一个十进制输入字段转换为值 val,并将 val < 69 val + 100 : val 存储在 pt-&tm_year 中。

'Y' -- 与 time_get::get_year 的行为相同。

任何其他转换说明符设置 state 中的 ios_base::failbit 并返回。 在此实现中,任何修饰符都无效。

time_get::do_get_date

一种受保护的虚拟成员函数,通过调用此函数可分析作为 strftimex 说明符所生成日期的字符串。

virtual iter_type do_get_date(iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    tm* ptm) const;

参数

first
确定待转换序列开头位置的输入迭代器。

last
确定待转换序列末尾位置的输入迭代器。

iosbase
一种格式标志,设定时表示货币符号是可选项;否则,它是必需项。

state
根据操作是否成功,设置流状态的相应位掩码元素。

ptm
指向要存储日期信息的指针。

返回值

一个输入迭代器,确定第一个超出输入字段的元素位置。

备注

受保护的虚拟成员函数首先会在序列 [ first, last) 中尝试匹配有序元素,直到识别到完整的非空日期输入字段。 如果成功,则会将此字段转换为等效于组件 tm::tm_mon、tm::tm_day 和 tm::tm_year 的值,并将结果分别存储在 ptm->tm_monptm->tm_dayptm->tm_year 中。 它将返回一个迭代器,指定第一个超出日期输入字段的元素。 否则,此函数在 state 中设置 iosbase::failbit。 它将返回一个迭代器,指定第一个超出有效日期输入字段的任何前缀的元素。 在任一情况下,如果返回的值等于 last,该函数在 state 中设置 ios_base::eofbit

日期输入字段的格式依赖于区域设置。 对于默认区域设置,日期输入字段的格式为 MMM DD,YYYY,其中:

  • MMM 通过调用 get_monthname 得到,表示月份。

  • DD 是十进制数字的序列,其对应的数值必须在 [1, 31] 范围内,表示月份中的天数。

  • YYYY 通过调用 get_year 得到,表示年份。

字面空格和逗号必须匹配输入序列中相应的元素。

示例

请参阅 get_date 的示例,它调用 do_get_date

time_get::do_get_monthname

为分析作为月份名称的字符串而调用的受保护虚拟函数。

virtual iter_type do_get_monthname(iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    tm* ptm) const;

参数

first
确定待转换序列开头位置的输入迭代器。

last
确定待转换序列末尾位置的输入迭代器。

iosbase
未使用。

state
根据操作是否成功,设置流状态的相应位掩码元素的输出参数。

ptm
指向要存储月份信息的指针。

返回值

一个输入迭代器,确定第一个超出输入字段的元素位置。

注解

受保护的虚拟成员函数首先会在序列 [ firstlast) 中尝试匹配有序元素,直到识别到完整的非空月份输入字段。 如果成功,则会将此字段转换为等效于组件 tm::tm_mon 的值,并将结果存储在 ptm->tm_mon 中。 它将返回一个迭代器,指定第一个超出月份输入字段的元素。 否则,此函数在 state 中设置 ios_base::failbit。 它将返回一个迭代器,指定第一个超出月份输入字段的任何前缀的元素。 在任一情况下,如果返回的值等于 last,该函数在 state 中设置 ios_base::eofbit

月份输入字段是匹配最长的一组特定于区域序列的序列,如 1 月、2 月、3 月、4 月等。 转换后的值是自 1 月份以来的月数。

示例

请参阅 get_monthname 的示例,它调用 do_get_monthname

time_get::do_get_time

一种受保护的虚拟成员函数,通过调用此函数可分析作为 strftimeX 说明符所生成日期的字符串。

virtual iter_type do_get_time(iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    tm* ptm) const;

参数

first
确定待转换序列开头位置的输入迭代器。

last
确定待转换序列末尾位置的输入迭代器。

iosbase
未使用。

State
根据操作是否成功,设置流状态的相应位掩码元素。

ptm
指向要存储日期信息的指针。

返回值

一个输入迭代器,确定第一个超出输入字段的元素位置。

备注

受保护的虚拟成员函数首先会在序列 [ firstlast) 中尝试匹配有序元素,直到识别到完整的非空时间输入字段。 如果成功,则会将此字段转换为等效于组件 tm::tm_hourtm::tm_mintm::tm_sec 的值,并将结果分别存储在 ptm->tm_hourptm->tm_minptm->tm_sec 中。 它将返回一个迭代器,指定第一个超出时间输入字段的元素。 否则,此函数在 state 中设置 ios_base::failbit。 它将返回一个迭代器,指定第一个超出时间输入字段的元素。 在任一情况下,如果返回的值等于 last,该函数在 state 中设置 ios_base::eofbit

在此实现中,时间输入字段采用以下格式:HH:MM:SS,其中:

  • HH 是十进制数字的序列,其对应的数值必须在 [0,24)范围内,表示小时。

  • MM 是十进制数字的序列,其对应的数值必须在 [0,60)范围内,表示分钟。

  • SS 是十进制数字的序列,其对应的数值必须在 [0,60)范围内,表示秒。

字面冒号必须匹配输入序列中相应的元素。

示例

请参阅 get_time 的示例,它调用 do_get_time

time_get::do_get_weekday

为分析作为周日期名称的字符串而调用的受保护虚拟成员函数。

virtual iter_type do_get_weekday(iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    tm* ptm) const;

参数

first
确定待转换序列开头位置的输入迭代器。

last
确定待转换序列末尾位置的输入迭代器。

iosbase
一种格式标志,设定时表示货币符号是可选项;否则,它是必需项。

state
根据操作是否成功,设置流状态的相应位掩码元素。

ptm
指向要存储的工作日信息的指针。

返回值

一个输入迭代器,确定第一个超出输入字段的元素位置。

注解

受保护的虚拟成员函数在序列 [ first, last) 中从 first 开始尝试匹配有序元素,直到识别到完整的非空工作日输入字段。 如果成功,则会将此字段转换为等效于组件 tm::tm_wday 的值,并将结果存储在 ptm->tm_wday 中。 它将返回一个迭代器,指定第一个超出工作日输入字段的元素。 否则,此函数在 state 中设置 ios_base::failbit。 它将返回一个迭代器,指定第一个超出有效工作日输入字段的任何前缀的元素。 在任一情况下,如果返回的值等于 last,该函数在 state 中设置 ios_base::eofbit

工作日输入字段是匹配最长的一组特定于区域序列的序列,如周日(星期日)、周一(星期一)等。 转换后的值是自星期日以来的天数。

示例

请参阅 get_weekday 的示例,它调用 do_get_weekday

time_get::do_get_year

为分析作为年份名称的字符串而调用的受保护虚拟成员函数。

virtual iter_type do_get_year(iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    tm* ptm) const;

参数

first
确定待转换序列开头位置的输入迭代器。

last
确定待转换序列末尾位置的输入迭代器。

iosbase
一种格式标志,设定时表示货币符号是可选项;否则,它是必需项。

state
根据操作是否成功,设置流状态的相应位掩码元素。

ptm
指向要存储的年份信息的指针。

返回值

一个输入迭代器,确定第一个超出输入字段的元素位置。

备注

受保护的虚拟成员函数在序列 [ first, last) 中从 first 开始尝试匹配有序元素,直到识别到完整的非空年份输入字段。 如果成功,则会将此字段转换为等效于组件 tm::tm_year 的值,并将结果存储在 ptm->tm_year 中。 它将返回一个迭代器,指定第一个超出年份输入字段的元素。 否则,此函数在 state 中设置 ios_base::failbit。 它将返回一个迭代器,指定第一个超出有效年份输入字段的元素。 在任一情况下,如果返回的值等于 last,该函数在 state 中设置 ios_base::eofbit

年份输入字段是十进制数字的序列,其对应的数值必须在 [1900, 2036) 范围内。 存储的值为此值减去 1900。 在此实现中,值范围 [69, 136) 表示年份范围 [1969、2036)。 也可使用值范围 [0, 69),但可能表示年份范围 [1900, 1969) 或 [2000, 2069),具体取决于转换环境。

示例

请参阅 get_year 的示例,它调用 do_get_year

time_get::get

从字符数据源读取,并将此数据转换为存储在时间结构中的时间。 第一个函数接受一个转换说明符和修饰符,而第二个接受多个。

iter_type get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    tm* ptm,
    char fmt,
    char mod) const;

iter_type get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    tm* ptm,
    char_type* fmt_first,
    char_type* fmt_last) const;

参数

first
一个输入迭代器,它指示从何处开始转换序列。

last
一个输入迭代器,它指示在何处结束序列转换。

iosbase
流。

State
为流状态设置适当的位掩码元素以指示错误。

ptm
一个指针,它指向要存储时间的时间结构。

fmt
一个转换说明符字符。

mod
一个可选修饰符字符。

fmt_first
指向格式指令开始的位置。

fmt_last
指向格式指令结束的位置。

返回值

将迭代器返回到用于分配时间结构 *ptm 的数据后面的第一个字符。

备注

第一个成员函数返回 do_get(first, last, iosbase, state, ptm, fmt, mod)

第二个成员函数调用以 [fmt_first, fmt_last) 分隔的格式的控件下的 do_get。 它将格式视为一个字段序列,其中每个字段确定了以 [first, last) 分隔的 0 个或多个输入元素的转换。 它返回一个迭代器,指定第一个未转换的元素。 有三种类型的字段:

格式中的百分号 (%),后跟 [EOQ#] 集中的一个可选修饰符 mod,后跟转换说明符 fmt,将 first 替换为 do_get(first, last, iosbase, state, ptm, fmt, mod) 返回的值。 转换失败会在 state 中设置 ios_base::failbit 并进行返回。

格式中的空白元素会跳过零个或多个输入空白元素。

格式中的任何其他元素必须匹配下一个输入元素,它会被跳过。 匹配失败会在 state 中设置 ios_base::failbit 并进行返回。

time_get::get_date

分析作为 strftimex 说明符所生成日期的字符串。

iter_type get_date(iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    tm* ptm) const;

参数

first
确定待转换序列开头位置的输入迭代器。

last
确定待转换序列末尾位置的输入迭代器。

iosbase
一种格式标志,设定时表示货币符号是可选项;否则,它是必需项。

state
根据操作是否成功,设置流状态的相应位掩码元素。

ptm
指向要存储日期信息的指针。

返回值

一个输入迭代器,确定第一个超出输入字段的元素位置。

注解

成员函数返回 do_get_date(first, last, iosbase, state, ptm)。

请注意,月份从 0 到 11 进行计算。

示例

// time_get_get_date.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>
#include <time.h>
using namespace std;
int main( )
{
   locale loc;
   basic_stringstream< char > pszGetF, pszPutF, pszGetI, pszPutI;
   ios_base::iostate st = 0;
   struct tm t;
   memset(&t, 0, sizeof(struct tm));

   pszGetF << "July 4, 2000";
   pszGetF.imbue( loc );
   basic_istream<char>::_Iter i = use_facet <time_get<char> >
   (loc).get_date(basic_istream<char>::_Iter(pszGetF.rdbuf( ) ),
            basic_istream<char>::_Iter(0), pszGetF, st, &t);

   if ( st & ios_base::failbit )
      cout << "time_get("<< pszGetF.rdbuf( )->str( )<< ") FAILED on char: " << *i << endl;
   else

      cout << "time_get("<< pszGetF.rdbuf( )->str( )<< ") ="
      << "\ntm_sec: " << t.tm_sec
      << "\ntm_min: " << t.tm_min
      << "\ntm_hour: " << t.tm_hour
      << "\ntm_mday: " << t.tm_mday
      << "\ntm_mon: " << t.tm_mon
      << "\ntm_year: " << t.tm_year
      << "\ntm_wday: " << t.tm_wday
      << "\ntm_yday: " << t.tm_yday
      << "\ntm_isdst: " << t.tm_isdst
      << endl;
}
time_get(July 4, 2000) =
tm_sec: 0
tm_min: 0
tm_hour: 0
tm_mday: 4
tm_mon: 6
tm_year: 100
tm_wday: 0
tm_yday: 0
tm_isdst: 0

time_get::get_monthname

分析作为月份名称的字符串。

iter_type get_monthname(iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    tm* ptm) const;

参数

first
确定待转换序列开头位置的输入迭代器。

last
确定待转换序列末尾位置的输入迭代器。

iosbase
未使用。

state
根据操作是否成功,设置流状态的相应位掩码元素的输出参数。

ptm
指向要存储月份信息的指针。

返回值

一个输入迭代器,确定第一个超出输入字段的元素位置。

注解

成员函数返回 do_get_monthname(first, last, iosbase, state, ptm)。

示例

// time_get_get_monthname.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>
#include <time.h>
using namespace std;
int main( )
{
   locale loc ( "French" );
   basic_stringstream<char> pszGetF, pszPutF, pszGetI, pszPutI;
   ios_base::iostate st = 0;
   struct tm t;
   memset( &t, 0, sizeof( struct tm ) );

   pszGetF << "juillet";
   pszGetF.imbue( loc );
   basic_istream<char>::_Iter i = use_facet <time_get <char> >
   (loc).get_monthname(basic_istream<char>::_Iter(pszGetF.rdbuf( )),
              basic_istream<char>::_Iter(0), pszGetF, st, &t);

   if (st & ios_base::failbit)
      cout << "time_get("<< pszGetF.rdbuf( )->str( )<< ") FAILED on char: " << *i << endl;
   else

      cout << "time_get("<< pszGetF.rdbuf( )->str( )<< ") ="
      << "\ntm_sec: " << t.tm_sec
      << "\ntm_min: " << t.tm_min
      << "\ntm_hour: " << t.tm_hour
      << "\ntm_mday: " << t.tm_mday
      << "\ntm_mon: " << t.tm_mon
      << "\ntm_year: " << t.tm_year
      << "\ntm_wday: " << t.tm_wday
      << "\ntm_yday: " << t.tm_yday
      << "\ntm_isdst: " << t.tm_isdst
      << endl;
}
time_get(juillet) =
tm_sec: 0
tm_min: 0
tm_hour: 0
tm_mday: 0
tm_mon: 6
tm_year: 0
tm_wday: 0
tm_yday: 0
tm_isdst: 0

time_get::get_time

分析作为 strftimeX 说明符所生成日期的字符串。

iter_type get_time(iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    tm* ptm) const;

参数

first
确定待转换序列开头位置的输入迭代器。

last
确定待转换序列末尾位置的输入迭代器。

iosbase
未使用。

State
根据操作是否成功,设置流状态的相应位掩码元素。

ptm
指向要存储日期信息的指针。

返回值

一个输入迭代器,确定第一个超出输入字段的元素位置。

备注

成员函数返回 do_get_time(first, last, iosbase, state, ptm)。

示例

// time_get_get_time.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>
#include <time.h>
using namespace std;
int main( )
{
   locale loc;
   basic_stringstream<char> pszGetF, pszPutF, pszGetI, pszPutI;
   ios_base::iostate st = 0;
   struct tm t;
   memset( &t, 0, sizeof( struct tm ) );

   pszGetF << "11:13:20";
   pszGetF.imbue( loc );
   basic_istream<char>::_Iter i = use_facet
      <time_get <char> >
      (loc).get_time(basic_istream<char>::_Iter(pszGetF.rdbuf( )),
               basic_istream<char>::_Iter(0), pszGetF, st, &t);

   if (st & ios_base::failbit)
      cout << "time_get::get_time("<< pszGetF.rdbuf( )->str( )<< ") FAILED on char: " << *i << endl;
   else

      cout << "time_get::get_time("<< pszGetF.rdbuf( )->str( )<< ") ="
      << "\ntm_sec: " << t.tm_sec
      << "\ntm_min: " << t.tm_min
      << "\ntm_hour: " << t.tm_hour
      << endl;
}
time_get::get_time(11:13:20) =
tm_sec: 20
tm_min: 13
tm_hour: 11

time_get::get_weekday

分析作为周日期名称的字符串。

iter_type get_weekday(iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    tm* ptm) const;

参数

first
确定待转换序列开头位置的输入迭代器。

last
确定待转换序列末尾位置的输入迭代器。

iosbase
一种格式标志,设定时表示货币符号是可选项;否则,它是必需项。

state
根据操作是否成功,设置流状态的相应位掩码元素。

ptm
指向要存储的工作日信息的指针。

返回值

一个输入迭代器,确定第一个超出输入字段的元素位置。

备注

成员函数返回 do_get_weekday(first, last, iosbase, state, ptm)。

示例

// time_get_get_weekday.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>
#include <time.h>
using namespace std;
int main( )
{
   locale loc ( "French" );
   basic_stringstream< char > pszGetF, pszPutF, pszGetI, pszPutI;
   ios_base::iostate st = 0;
   struct tm t;
   memset( &t, 0, sizeof( struct tm ) );

   pszGetF << "mercredi";
   pszGetF.imbue(loc);
   basic_istream<char>::_Iter i = use_facet
      <time_get<char> >
      (loc).get_weekday(basic_istream<char>::_Iter(pszGetF.rdbuf( )),
               basic_istream<char>::_Iter(0), pszGetF, st, &t);

   if (st & ios_base::failbit)
      cout << "time_get::get_time("<< pszGetF.rdbuf( )->str( )<< ") FAILED on char: " << *i << endl;
   else

      cout << "time_get::get_time("<< pszGetF.rdbuf( )->str( )<< ") ="
      << "\ntm_wday: " << t.tm_wday
      << endl;
}
time_get::get_time(mercredi) =
tm_wday: 3

time_get::get_year

分析作为年份名称的字符串。

iter_type get_year(iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    tm* ptm) const;

参数

first
确定待转换序列开头位置的输入迭代器。

last
确定待转换序列末尾位置的输入迭代器。

iosbase
一种格式标志,设定时表示货币符号是可选项;否则,它是必需项。

state
根据操作是否成功,设置流状态的相应位掩码元素。

ptm
指向要存储的年份信息的指针。

返回值

一个输入迭代器,确定第一个超出输入字段的元素位置。

备注

成员函数返回 do_get_year(first, last, iosbase, state, ptm)。

示例

// time_get_get_year.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>
#include <time.h>
using namespace std;
int main( )
{
   locale loc;
   basic_stringstream<char> pszGetF, pszPutF, pszGetI, pszPutI;
   ios_base::iostate st = 0;
   struct tm t;
   memset( &t, 0, sizeof( struct tm ) );

   pszGetF << "1928";

   pszGetF.imbue( loc );
   basic_istream<char>::_Iter i = use_facet
      <time_get<char> >
      (loc).get_year(basic_istream<char>::_Iter(pszGetF.rdbuf( )),
               basic_istream<char>::_Iter(0), pszGetF, st, &t);

   if (st & ios_base::failbit)
      cout << "time_get::get_year("<< pszGetF.rdbuf( )->str( )<< ") FAILED on char: " << *i << endl;
   else

      cout << "time_get::get_year("<< pszGetF.rdbuf( )->str( )<< ") ="
      << "\ntm_year: " << t.tm_year
      << endl;
}
time_get::get_year(1928) =
tm_year: 28

time_get::iter_type

一种类型,此类型描述输入迭代器。

typedef InputIterator iter_type;

注解

该类型是模板参数 InputIterator 的同义词。

time_get::time_get

time_get 类型的对象的构造函数。

explicit time_get(size_t refs = 0);

参数

refs
用于指定对象的内存管理类型的整数值。

备注

refs 参数可能的值及其含义:

  • 0:对象的生存期由包含该对象的区域设置管理。

  • 1:必须手动管理对象的生存期。

  • > 1:未定义这些值。

由于该析构函数受到保护,可能没有直接的示例。

构造函数通过 locale::facet(refs) 初始化其基对象。

另请参阅

<区域设置>
time_base 类
C++ 标准库中的线程安全