std::codecvt_utf8_utf16

来自cppreference.com
< cpp‎ | locale

 
 
本地化库
语言环境方面
原文:
Locales and facets
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
locale
字符分类
原文:
Character classification
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
转换
原文:
Conversions
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
wstring_convert(C++11)
wbuffer_convert(C++11)
小面类的基类
原文:
Facet category base classes
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
小面类
原文:
Facet categories
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
特定于语言环境的方面
原文:
Locale-specific facets
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
代码转换方面
原文:
Code conversion facets
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
codecvt_utf8(C++11)
codecvt_utf16(C++11)
codecvt_utf8_utf16(C++11)
codecvt_mode(C++11)
C语言环境
原文:
C locale
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
 
在头文件 <codecvt> 中定义
template< class Elem,

          unsigned long Maxcode = 0x10ffff,
          std::codecvt_mode Mode = (std::codecvt_mode)0 >

class codecvt_utf8_utf16 : public std::codecvt<Elem, char, std::mbstate_t>;
std::codecvt_utf8_utf16是一个std::codecvt方面,它封装了一个UTF-8编码的字节串和UTF-16编码的字符串之间的转换。如果Elem是一个32 - 位类型,将一个UTF-16代码点存储在每个32位字符的输出序列,这codecvt方面可用于读取和写入UTF-8文件,文本文件和二进制.
原文:
std::codecvt_utf8_utf16 is a std::codecvt facet which encapsulates conversion between a UTF-8 encoded byte string and UTF-16 encoded character string. If Elem is a 32-bit type, one UTF-16 codepoint will be stored in each 32-bit character of the output sequence. This codecvt facet can be used to read and write UTF-8 files, both text and binary.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

目录

[编辑] 模板参数

Elem -
无论是char16_tchar32_t,或wchar_t
原文:
either char16_t, char32_t, or wchar_t
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
Maxcode -
Elem最大的价值,这方面没有读取或写入错误
原文:
the largest value of Elem that this facet will read or write without error
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
Mode -
恒定的类型std::codecvt_mode
原文:
a constant of type std::codecvt_mode
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

Inherited from std::codecvt

Member types

会员类型
原文:
Member type
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
Definition
intern_type internT
extern_type externT
state_type stateT

Member objects

会员名称
原文:
Member name
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
Type
id (静态的) std::locale::id

Member functions

调用do_out
原文:
invokes do_out
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

(公共成员函数of std::codecvt [edit]
调用do_in
原文:
invokes do_in
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

(公共成员函数of std::codecvt [edit]
调用do_unshift
原文:
invokes do_unshift
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

(公共成员函数of std::codecvt [edit]
调用do_encoding
原文:
invokes do_encoding
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

(公共成员函数of std::codecvt [edit]
调用do_always_noconv
原文:
invokes do_always_noconv
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

(公共成员函数of std::codecvt [edit]
调用do_length
原文:
invokes do_length
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

(公共成员函数of std::codecvt [edit]
调用do_max_length
原文:
invokes do_max_length
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

(公共成员函数of std::codecvt [edit]

Protected member functions

[虚]</div></div>
转换成一个字符串,如写入文件时,从Internt的externT
原文:
converts a string from internT to externT, such as when writing to file
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

(虚拟保护成员函数of std::codecvt [edit]
[虚]</div></div>
将字符串转换,如从文件读取时,从externT到Internt的
原文:
converts a string from externT to internT, such as when reading from file
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

(虚拟保护成员函数of std::codecvt [edit]
[虚]</div></div>
产生的externT不完全转化为字符序列终止符
原文:
generates the termination character sequence of externT characters for incomplete conversion
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

(虚拟保护成员函数of std::codecvt [edit]
[虚]</div></div>
返回的externT需要产生一个Internt的字符的字符数,如果不变
原文:
returns the number of externT characters necessary to produce one internT character, if constant
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

(虚拟保护成员函数of std::codecvt [edit]
[虚]</div></div>
该方面的测试,如果所有有效参数值的标识转换为编码
原文:
tests if the facet encodes an identity conversion for all valid argument values
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

(虚拟保护成员函数of std::codecvt [edit]
[虚]</div></div>
计算将转换成给定的Internt的缓冲区消耗的externT字符串,该字符串的长度
原文:
calculates the length of the externT string that would be consumed by conversion into given internT buffer
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

(虚拟保护成员函数of std::codecvt [edit]
[虚]</div></div>
返回的最大数目,可以被转换成一个单一的Internt的字符externT字符
原文:
returns the maximum number of externT characters that could be converted into a single internT character
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

(虚拟保护成员函数of std::codecvt [edit]


</div>

Inherited from std::codecvt_base

会员类型
原文:
Member type
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
Definition
enum result { ok, partial, error, noconv };
无作用域的枚举类型
原文:
Unscoped enumeration type
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
枚举常量
原文:
Enumeration constant
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
Definition
ok
转换完成,没有错误
原文:
conversion was completed with no error
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
partial
不是所有的源字符被转换了
原文:
not all source characters were converted
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
error
遇到无效的字符
原文:
encountered an invalid character
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
noconv
没有转换,输入和输出类型是相同的
原文:
no conversion required, input and output types are the same
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] 为例

下面的例子演示了如何读取一个UTF -8文件成UTF-16字符串的系统上使用32位wchar_t
原文:
The following example demonstrates reading a UTF-8 file into a UTF-16 string on a system with 32-bit wchar_t
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

#include <fstream>
#include <iostream>
#include <string>
#include <locale>
#include <codecvt>
int main()
{
    std::ofstream("text.txt") << u8"z\u6c34\U0001d10b";
 
    std::wifstream file1("text.txt");
    file1.imbue(std::locale("en_US.UTF8"));
    std::cout << "Normal read from file (using default UTF-8/UTF-32 codecvt)\n";
    for(wchar_t c; file1 >> c; )
        std::cout << std::hex << std::showbase << c << '\n';
 
    std::wifstream file2("text.txt");
    file2.imbue(std::locale(file2.getloc(), new std::codecvt_utf8_utf16<wchar_t>));
    std::cout << "UTF-16 read from the same file (using codecvt_utf8_utf16)\n";
    for(wchar_t c; file2 >> c; )
        std::cout << std::hex << std::showbase << c << '\n';
}

输出:

Normal read from file (using default UTF-8/UTF-32 codecvt)
0x7a
0x6c34
0x1d10b
UTF-16 read from the same file (using codecvt_utf8_utf16)
0x7a
0x6c34
0xd834
0xdd0b

[编辑] 另请参阅

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>
N/A
UCS2 No 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)
No codecvt_utf8<wchar_t> codecvt_utf16<wchar_t>
wide
(wchar_t)
codecvt<wchar_t, char, mbstate_t>
mbsrtowcs / wcsrtombs
No No
之间进行转换的字符编码​​,包括UTF-8,UTF-16,UTF-32
原文:
converts between character encodings, including UTF-8, UTF-16, UTF-32
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

(类模板) [edit]
(C++11)
标签改变的的标准codecvt方面的行为
原文:
tags to alter behavior of the standard codecvt facets
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

(类) [edit]
(C++11)
之间的转换UTF-8和UCS2/UCS4
原文:
converts between UTF-8 and UCS2/UCS4
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

(类模板) [edit]
(C++11)
之间的转换UTF-16和UCS2/UCS4
原文:
converts between UTF-16 and UCS2/UCS4
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

(类模板) [edit]

来自“http://zh.cppreference.com/mwiki/index.php?title=cpp/locale/codecvt_utf8_utf16&oldid=31206