[ Web Proxy ]
URL:
Viewing: https://ru.cppreference.com/cpp/locale/codecvt_utf16 [Back]  [Original]

std::codecvt_utf16 cppreference.com
cppreference.com

std::codecvt_utf16

cppreference.com

<metanoindex/>

<tbody> </tbody>
template< class Elem, unsigned long Maxcode = 0x10ffff, std::codecvt_mode Mode = (std::codecvt_mode)0 > class codecvt_utf16 : public std::codecvt<Elem, char, std::mbstate_t>;;
std::codecvt_utf16 std::codecvt , UTF-16 UCS2 UCS4 ( Elem). codecvt UTF-16 .
:
std::codecvt_utf16 is a std::codecvt facet which encapsulates conversion between a UTF-16 encoded byte string and UCS2 or UCS4 character string (depending on the type of Elem). This codecvt facet can be used to read and write UTF-16 files in binary mode.
Google.
. .

Elem
char16_t, char32_t, wchar_t
:
either char16_t, char32_t, or wchar_t
Google.
. .
Maxcode
Elem,
:
the largest value of Elem that this facet will read or write without error
Google.
. .
Mode
std::codecvt_mode
:
a constant of type std::codecvt_mode
Google.
. .

std::codecvt

Member types

intern_type internT
extern_type externT
state_type stateT

Member objects

:
Member name
Google.
. .
Type
id () std::locale::id

Member functions

do_out
:
invokes do_out
Google.
. .

(public - std::codecvt) []
do_in
:
invokes do_in
Google.
. .

(public - std::codecvt) []
do_unshift
:
invokes do_unshift
Google.
. .

(public - std::codecvt) []
do_encoding
:
invokes do_encoding
Google.
. .

(public - std::codecvt) []
do_always_noconv
:
invokes do_always_noconv
Google.
. .

(public - std::codecvt) []
do_length
:
invokes do_length
Google.
. .

(public - std::codecvt) []
do_max_length
:
invokes do_max_length
Google.
. .

(public - std::codecvt) []

Protected member functions

[virtual]
internT externT, ,
:
converts a string from internT to externT, such as when writing to file
Google.
. .

(virtual protected std::codecvt -) []
[virtual]
externT internT, ,
:
converts a string from externT to internT, such as when reading from file
Google.
. .

(virtual protected std::codecvt -) []
[virtual]
externT
:
generates the termination character sequence of externT characters for incomplete conversion
Google.
. .

(virtual protected std::codecvt -) []
[virtual]
externT , internT ,
:
returns the number of externT characters necessary to produce one internT character, if constant
Google.
. .

(virtual protected std::codecvt -) []
,
:
tests if the facet encodes an identity conversion for all valid argument values
Google.
. .

(virtual protected std::codecvt -) []
[virtual]
externT , internT
:
calculates the length of the externT string that would be consumed by conversion into given internT buffer
Google.
. .

(virtual protected std::codecvt -) []
externT , internT
:
returns the maximum number of externT characters that could be converted into a single internT character
Google.
. .

(virtual protected std::codecvt -) []


std::codecvt_base

enum result { ok, partial, error, noconv };
:
Unscoped enumeration type
Google.
. .
:
Enumeration constant
Google.
. .
Definition
ok
:
conversion was completed with no error
Google.
. .
partial
:
not all source characters were converted
Google.
. .
error
:
encountered an invalid character
Google.
. .
noconv
,
:
no conversion required, input and output types are the same
Google.
. .

UTF-16LE 32- wchar_t. 16- wchar_t, , std::codecvt_utf16<char16_t> UCS2, UTF-16 .
:
The following example demonstrates decoding of UTF-16le file on a system with 32-bit wchar_t. On a system with 16-bit wchar_t, decoding of the third character will fail because std::codecvt_utf16<char16_t> produces UCS2, not UTF-16.
Google.
. .

#include <fstream>
#include <iostream>
#include <string>
#include <locale>
#include <codecvt>
void prepare_file()
{
    // UTF-16le data (if host system is little-endian)
    char16_t utf16le[4] ={0x007a,          // latin small letter 'z' U+007a
                          0x6c34,          // CJK ideograph "water"  U+6c34
                          0xd834, 0xdd0b}; // musical sign segno U+1d10b
    // store in a file
    std::ofstream fout("text.txt");
    fout.write( reinterpret_cast<char*>(utf16le), sizeof utf16le);
}
int main()
{
    prepare_file();
    // open as a byte stream
    std::wifstream fin("text.txt", std::ios::binary);
    // apply facet
    fin.imbue(std::locale(fin.getloc(),
       new std::codecvt_utf16<wchar_t, 0x10ffff, std::little_endian>));

    for(wchar_t c; fin.get(c); )
            std::cout << std::showbase << std::hex << c << '\n';
}

:

0x7a
0x6c34
0x1d10b

.

Character
conversions
narrow multibyte
(char)
UTF-8
(char)
UTF-16
(char16_t)
UTF-16 mbrtoc16 / c16rtomb codecvt<char16_t, char, mbstate_t>
codecvt_utf8_utf16<char16_t>
codecvt_utf8_utf16<char32_t>
codecvt_utf8_utf16<wchar_t>
/
UCS2 codecvt_utf8<char16_t> codecvt_utf16<char16_t>
UTF-32/UCS4
(char32_t)
mbrtoc32 / c32rtomb codecvt<char32_t, char, mbstate_t>
codecvt_utf8<char32_t>
codecvt_utf16<char32_t>
UCS2/UCS4
(wchar_t)
codecvt_utf8<wchar_t> codecvt_utf16<wchar_t>
wide
(wchar_t)
codecvt<wchar_t, char, mbstate_t>
mbsrtowcs / wcsrtombs
, UTF-8, UTF-16, UTF-32
( ) []
(C++11)( C++17)
codecvt
() []
(C++11)( C++17)
UTF-8 UCS-2/UCS-4
( ) []
(C++11)( C++17)
UTF-8 UTF-16
( ) []

Web Proxy Viewer  |  New URL  |  Original Page