std::time_put_byname

From cppreference.com
< cpp‎ | locale
 
 
Localizations library
Locales and facets
Locales
Facet category base classes
ctype facets
numeric facets
collate facets
time facets
time_put_byname
monetary facets
messages facets
Character classification and conversion
Character classification
Conversions
(C++11/17*)
(C++11/17*)
Code conversion facets
(C++11/17*)
(C++11/17*)    
(C++11/17*)
C locale
 
Defined in header <locale>
template<

    class CharT,
    class OutputIt = std::ostreambuf_iterator<CharT>

> class time_put_byname : public std::time_put<CharT, OutputIt>;

std::time_put_byname is a std::time_put facet which encapsulates time and date formatting rules of the locale specified at its construction.

Specializations

The standard library is guaranteed to provide every specialization that satisfies the following type requirements:

  • CharT is one of char and wchar_t, and
  • OutputIt must meet the requirements of LegacyOutputIterator.

Member types

Member type Definition
char_type CharT
iter_type OutputIt

Member functions

(constructor)
constructs a new time_put_byname facet
(public member function)
(destructor)
destroys a time_put_byname facet
(protected member function)

std::time_put_byname::time_put_byname

explicit time_put_byname( const char* name, std::size_t refs = 0 );
explicit time_put_byname( const std::string& name, std::size_t refs = 0 );
(since C++11)

Constructs a new std::time_put_byname facet for a locale with name.

refs is used for resource management: if refs == 0, the implementation destroys the facet, when the last std::locale object holding it is destroyed. Otherwise, the object is not destroyed.

Parameters

name - the name of the locale
refs - the number of references that link to the facet

std::time_put_byname::~time_put_byname

protected:
~time_put_byname();

Destroys the facet.

Inherited from std::time_put

Member objects

Member name Type
id (static) std::locale::id

Member functions

invokes do_put
(public member function of std::time_put<CharT,OutputIt>)

Protected member functions

[virtual]
formats date/time and writes to output stream
(virtual protected member function of std::time_put<CharT,OutputIt>)

Example

This example prints current time using the "C" locale with the time_put facet replaced by various std::time_put_byname facets:

#include <iostream>
#include <ctime>
#include <iomanip>
#include <codecvt>
 
int main()
{
    std::time_t t = std::time(nullptr);
    std::wbuffer_convert<std::codecvt_utf8<wchar_t>> conv(std::cout.rdbuf());
    std::wostream out(&conv);
 
    out.imbue(std::locale(out.getloc(),
                          new std::time_put_byname<wchar_t>("ja_JP")));
    out << std::put_time(std::localtime(&t), L"%A %c") << '\n';
 
    out.imbue(std::locale(out.getloc(),
                          new std::time_put_byname<wchar_t>("ru_RU.utf8")));
    out << std::put_time(std::localtime(&t), L"%A %c") << '\n'; 
 
    out.imbue(std::locale(out.getloc(),
                          new std::time_put_byname<wchar_t>("sv_SE.utf8")));
    out << std::put_time(std::localtime(&t), L"%A %c") << '\n'; 
}

Possible output:

木曜日 2012年08月09日 21時41分02秒
Четверг Чт. 09 авг. 2012 21:41:02
torsdag tor  9 aug 2012 21:41:02

See also

formats contents of std::tm for output as character sequence
(class template)