25 Localization library [localization]

25.4 Standard locale categories [locale.categories]

25.4.5 The time category [category.time]

25.4.5.3 Class template time_­put [locale.time.put]

namespace std {
  template <class charT, class OutputIterator = ostreambuf_iterator<charT>>
    class time_put : public locale::facet {
    public:
      using char_type = charT;
      using iter_type = OutputIterator;

      explicit time_put(size_t refs = 0);

      // the following is implemented in terms of other member functions.
      iter_type put(iter_type s, ios_base& f, char_type fill, const tm* tmb,
                    const charT* pattern, const charT* pat_end) const;
      iter_type put(iter_type s, ios_base& f, char_type fill,
                    const tm* tmb, char format, char modifier = 0) const;

      static locale::id id;

    protected:
      ~time_put();
      virtual iter_type do_put(iter_type s, ios_base&, char_type, const tm* t,
                               char format, char modifier) const;
    };
}

25.4.5.3.1 time_­put members [locale.time.put.members]

iter_type put(iter_type s, ios_base& str, char_type fill, const tm* t, const charT* pattern, const charT* pat_end) const; iter_type put(iter_type s, ios_base& str, char_type fill, const tm* t, char format, char modifier = 0) const;

Effects: Первая форма проходит через последовательность от pattern до pat_­end, определяя символы, которые являются частью последовательности форматирования. Каждый символ, который не является частью последовательности форматирования, записывается s немедленно, и каждая последовательность форматирования, как она идентифицирована, приводит к вызову do_­put; таким образом, элементы формата и другие символы чередуются в выводе в том порядке, в котором они появляются в шаблоне. Последовательности форматов идентифицируются путем преобразования каждого символа c в char значение, как если бы ct.narrow(c, 0), где ct - ссылка, из которой нужно ctype<charT> получить str.getloc(). Первый символ каждой последовательности равен '%', за ним следует необязательный символ-модификатор и символ-спецификатор mod245 формата, spec как определено для функции strftime. Если символ-модификатор отсутствует, mod равен нулю. Для каждой идентифицированной допустимой последовательности форматов вызывается do_­put(s, str, fill, t, spec, mod).

Вторая форма вызывает do_­put(s, str, fill, t, format, modifier).

[ Аргумент может быть использован в реализации определенных форматов или дифференцирования. Разумным значением по умолчанию для этого аргумента является пробел. ]Note: fill end note

Returns: Итератор, указывающий сразу после последнего созданного символа.

Хотя язык программирования C не определяет никаких модификаторов, большинство поставщиков это делают.

25.4.5.3.2 time_­put virtual functions [locale.time.put.virtuals]

iter_type do_put(iter_type s, ios_base&, char_type fill, const tm* t, char format, char modifier) const;

Effects: Форматирует содержимое параметра t в символы, помещенные в выходную последовательность s. Форматирование управляется параметрами format и modifierинтерпретируется идентично спецификаторам формата в строковом аргументе стандартной библиотечной функции strftime()246, за исключением того, что последовательность символов, созданная для тех спецификаторов, которые описаны как зависящие от локали C, вместо этого определяется реализацией.247

Returns: Итератор, указывающий сразу после последнего созданного символа. [ Аргумент может быть использован в реализации определенных форматов или дифференцирования. Разумным значением по умолчанию для этого аргумента является пробел. ] Note: fill end note

Интерпретация modifier аргумента определяется реализацией, но должна соответствовать соглашениям POSIX.

Реализациям рекомендуется ссылаться на другие стандарты, такие как POSIX, для этих определений.