std::codecvt_byname
cppreference.com
[] |
Google. . , . , . |
<metanoindex/>
<tbody> </tbody> template< class internT, class externT, class stateT > class codecvt_byname : public std::codecvt<internT, externT, stateT>; |
||
std::codecvt_byname std::codecvt , / .
:
std::codecvt_byname is a std::codecvt facet which encapsulates multibyte/wide character conversion rules of a locale specified at its construction.
<locale> | |
std::codecvt_byname<char, char, std::mbstate_t>
|
|
std::codecvt_byname<char16_t, char, std::mbstate_t>
|
UTF-16 UTF-8 ( C++11)
|
std::codecvt_byname<char32_t, char, std::mbstate_t>
|
UTF-32 UTF-8 ( C++11)
|
std::codecvt_byname<wchar_t, char, std::mbstate_t>
|
, , ,
|
-
codecvt_byname (public -) | |
codecvt_byname (protected -) |
std::codecvt
Member types
intern_type
|
internT
|
extern_type
|
externT
|
state_type
|
stateT
|
Member objects
| Type | |
id ()
|
std::locale::id |
Member functions
do_out (public - std::codecvt)
| |
do_in (public - std::codecvt)
| |
do_unshift (public - std::codecvt)
| |
do_encoding (public - std::codecvt)
| |
do_always_noconv (public - std::codecvt)
| |
do_length (public - std::codecvt)
| |
do_max_length (public - std::codecvt)
|
Protected member functions
[virtual] |
internT externT, , (virtual protected std::codecvt -)
|
[virtual] |
externT internT, , (virtual protected std::codecvt -)
|
[virtual] |
externT : generates the termination character sequence of externT characters for incomplete conversion (virtual protected std::codecvt -)
|
[virtual] |
externT , internT , : returns the number of externT characters necessary to produce one internT character, if constant (virtual protected std::codecvt -)
|
[virtual] |
, (virtual protected std::codecvt -)
|
[virtual] |
externT , internT : calculates the length of the externT string that would be consumed by conversion into given internT buffer (virtual protected std::codecvt -)
|
[virtual] |
externT , internT : returns the maximum number of externT characters that could be converted into a single internT character (virtual protected std::codecvt -)
|
GB18030- , codecvt GB18030-
:
This example demonstrates reading a GB18030-encoded file using the codecvt facet from a GB18030-aware locale
#include <iostream>
#include <fstream>
#include <string>
#include <locale>
int main()
{
// GB18030 narrow multibyte encoding
std::ofstream("text.txt") << "\x7a" // letter 'z', U+007a
"\x81\x30\x89\x38" // letter '', U+00df
"\xcb\xae" // CJK ideogram '' (water), U+6c34
"\x94\x32\xbc\x35"; // musical sign '' (segno), U+1d10b
std::wifstream fin("text.txt");
fin.imbue(std::locale(fin.getloc(),
new std::codecvt_byname<wchar_t, char, std::mbstate_t>("zh_CN.gb18030")));
for(wchar_t c; fin.get(c); )
std::cout << std::hex << std::showbase << c << '\n';
}
:
0x7a
0xdf
0x6c34
0x1d10b
.
| , UTF-8, UTF-16, UTF-32 ( ) |