Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/locale/time put byname"

From cppreference.com
< cpp‎ | locale
m (fmt, nullptr, langlinks)
m (c -> c/core.)
Line 1: Line 1:
{{cpp/title | time_put_byname}}
+
{{cpp/title|time_put_byname}}
 
{{cpp/locale/navbar}}
 
{{cpp/locale/navbar}}
 
{{dcl begin}}
 
{{dcl begin}}
{{dcl header | locale}}
+
{{dcl header|locale}}
{{dcl | 1=
+
{{dcl|1=
 
template< class CharT, class OutputIterator = std::ostreambuf_iterator<CharT> >
 
template< class CharT, class OutputIterator = std::ostreambuf_iterator<CharT> >
 
class time_put_byname : public std::time_put<CharT, OutputIterator>;
 
class time_put_byname : public std::time_put<CharT, OutputIterator>;
Line 9: Line 9:
 
{{dcl end}}
 
{{dcl end}}
  
{{lc|std::time_put_byname}} is a {{lc|std::time_put}} facet which encapsulates time and date formatting rules of the locale specified at its construction.
+
{{tt|std::time_put_byname}} is a {{lc|std::time_put}} facet which encapsulates time and date formatting rules of the locale specified at its construction.
  
 
Two specializations are provided by the standard library
 
Two specializations are provided by the standard library
Line 15: Line 15:
 
{{dsc begin}}
 
{{dsc begin}}
 
{{dsc header | locale }}
 
{{dsc header | locale }}
{{dsc | {{c|std::time_put_byname<char, OutputIterator>}} | narrow/multibyte time formatting }}
+
{{dsc | {{c/core|std::time_put_byname<char, OutputIterator>}} | narrow/multibyte time formatting }}
{{dsc | {{c|std::time_put_byname<wchar_t, OutputIterator>}} | wide string time formatting }}
+
{{dsc | {{c/core|std::time_put_byname<wchar_t, OutputIterator>}} | wide string time formatting }}
 
{{dsc end}}
 
{{dsc end}}
  
Line 39: Line 39:
 
===Example===
 
===Example===
 
{{example
 
{{example
| This example prints current time using the "C" locale with the time_put facet replaced by various {{tt|std::time_put_byname}} facets
+
|This example prints current time using the "C" locale with the time_put facet replaced by various {{tt|std::time_put_byname}} facets:
| code=
+
|code=
 
#include <iostream>
 
#include <iostream>
 
#include <ctime>
 
#include <ctime>
Line 51: Line 51:
 
     std::wbuffer_convert<std::codecvt_utf8<wchar_t>> conv(std::cout.rdbuf());
 
     std::wbuffer_convert<std::codecvt_utf8<wchar_t>> conv(std::cout.rdbuf());
 
     std::wostream out(&conv);
 
     std::wostream out(&conv);
 
+
   
 
     out.imbue(std::locale(out.getloc(),
 
     out.imbue(std::locale(out.getloc(),
 
                           new std::time_put_byname<wchar_t>("ja_JP")));
 
                           new std::time_put_byname<wchar_t>("ja_JP")));
 
     out << std::put_time(std::localtime(&t), L"%A %c") << '\n';
 
     out << std::put_time(std::localtime(&t), L"%A %c") << '\n';
 
+
   
 
     out.imbue(std::locale(out.getloc(),
 
     out.imbue(std::locale(out.getloc(),
                        new std::time_put_byname<wchar_t>("ru_RU.utf8")));
+
                          new std::time_put_byname<wchar_t>("ru_RU.utf8")));
 
     out << std::put_time(std::localtime(&t), L"%A %c") << '\n';  
 
     out << std::put_time(std::localtime(&t), L"%A %c") << '\n';  
 
+
   
 
     out.imbue(std::locale(out.getloc(),
 
     out.imbue(std::locale(out.getloc(),
                        new std::time_put_byname<wchar_t>("sv_SE.utf8")));
+
                          new std::time_put_byname<wchar_t>("sv_SE.utf8")));
 
     out << std::put_time(std::localtime(&t), L"%A %c") << '\n';  
 
     out << std::put_time(std::localtime(&t), L"%A %c") << '\n';  
 
}
 
}
| p=true
+
|p=true
| output=
+
|output=
 
木曜日 2012年08月09日 21時41分02秒
 
木曜日 2012年08月09日 21時41分02秒
 
Четверг Чт. 09 авг. 2012 21:41:02
 
Четверг Чт. 09 авг. 2012 21:41:02

Revision as of 00:06, 21 January 2023

 
 
 
Defined in header <locale>
template< class CharT, class OutputIterator = std::ostreambuf_iterator<CharT> >
class time_put_byname : public std::time_put<CharT, OutputIterator>;

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

Two specializations are provided by the standard library

Defined in header <locale>
std::time_put_byname<char, OutputIterator> narrow/multibyte time formatting
std::time_put_byname<wchar_t, OutputIterator> wide string time formatting

Contents

Member types

Member type Definition
char_type CharT
iter_type OutputIterator

Member functions

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

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>) [edit]

Protected member functions

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

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) [edit]