Spec-Zone.ru › C++

std::time_get

Определено в заголовочном файле <locale>
template< 
    class CharT, 
    class InputIt = std::istreambuf_iterator<CharT> 
> class time_get;

Шаблон класса std::time_get инкапсулирует правила разбора даты и времени. Манипулятор ввода-вывода std::get_time использует фасет std::time_get локали потока ввода-вывода для преобразования текстового ввода в объект std::tm.

cpp/locale/time base cpp/locale/locale/facet

Диаграмма наследования

Если специализация std::time_get не гарантирована стандартной библиотекой (см. ниже), поведение её функций-членов (за исключением конструктора и деструктора) не гарантируется в соответствии со спецификацией.

Специализации

Стандартная библиотека гарантированно предоставляет следующие специализации (они должны быть реализованы любым объектом локали):

Определено в заголовочном файле <locale>
std::time_get<char> разбирает узкие строковые представления даты и времени
std::time_get<wchar_t> разбирает широкие строковые представления даты и времени

Кроме того, стандартная библиотека также гарантированно предоставляет все специализации, удовлетворяющие следующим требованиям к типам:

  • CharT — это один из типов char и wchar_t, а
  • InputIt должен удовлетворять требованиям LegacyInputIterator.

Вложенные типы

Тип Определение
char_type CharT
iter_type InputIt

Члены-данные

Член Описание
std::locale::id id [static] идентификатор фасета

Функции-члены

(constructor)
создаёт новый фасет time_get
(открытая функция-член)
(destructor)
уничтожает фасет time_get
(защищённая функция-член)
date_order
вызывает do_date_order
(открытая функция-член)
get_time
вызывает do_get_time
(открытая функция-член)
get_date
вызывает do_get_date
(открытая функция-член)
get_weekday
вызывает do_get_weekday
(открытая функция-член)
get_monthname
вызывает do_get_monthname
(открытая функция-член)
get_year
вызывает do_get_year
(открытая функция-член)
get
(C++11)
вызывает do_get
(открытая функция-член)

Защищённые функции-члены

do_date_order
[virtual]
получает предпочтительный порядок дня, месяца и года
(виртуальная защищённая функция-член)
do_get_time
[virtual]
извлекает часы, минуты и секунды из входного потока
(виртуальная защищённая функция-член)
do_get_date
[virtual]
извлекает месяц, день и год из входного потока
(виртуальная защищённая функция-член)
do_get_weekday
[virtual]
извлекает название дня недели из входного потока
(виртуальная защищённая функция-член)
do_get_monthname
[virtual]
извлекает название месяца из входного потока
(виртуальная защищённая функция-член)
do_get_year
[virtual]
извлекает год из входного потока
(виртуальная защищённая функция-член)
do_get
[virtual] (C++11)
извлекает компоненты даты и времени из входного потока в соответствии с заданным форматом
(виртуальная защищённая функция-член)

Унаследовано от std::time_base

Вложенные типы

Тип Определение
dateorder тип перечисления порядка даты, определяющий значения no_order, dmy, mdy, ymd и ydm

Пример

Примечание: выберите clang, чтобы увидеть результат. libstdc++ некорректно реализует спецификатор %b: ошибка 78714.

#include <iomanip>
#include <iostream>
#include <locale>
#include <sstream>

int main()
{
    std::tm t = {};
    std::istringstream ss("2011-Februar-18 23:12:34");
    ss.imbue(std::locale("de_DE.utf-8"));
    
    ss >> std::get_time(&t, "%Y-%b-%d %H:%M:%S");
    if (ss.fail())
        std::cout << "Parse failed\n";
    else
        std::cout << std::put_time(&t, "%c") << '\n';
}

Возможный вывод:

Sun Feb 18 23:12:34 2011

См. также

time_put
форматирует содержимое std::tm для вывода в виде последовательности символов
(шаблон класса)
get_time
(C++11)
разбирает значение даты и времени в заданном формате
(шаблон функции)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/locale/time_get

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API