std::codecvt_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_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 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-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 Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

#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>
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]
converts between UTF-8 and UTF-16
(类模板) [edit]

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