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;
};
}
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).
[ Аргумент может быть использован в реализации определенных форматов или дифференцирования. Разумным значением по умолчанию для этого аргумента является пробел. ] Note: fill — end note
Хотя язык программирования C не определяет никаких модификаторов, большинство поставщиков это делают.
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, для этих определений.