std::codecvt
来自cppreference.com
|
|
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
| Defined in header <locale>
|
||
| template< class InternT, |
||
类std::codecvt封装转换的字符串,其中包括广泛和多,从一种编码转换到另一个。所有文件I / O操作通过std::basic_fstream<CharT>使用的语言环境充满流中的std::codecvt<CharT, char, std::mbstate_t>方面.
Original:
Class std::codecvt encapsulates conversion of character strings, including wide and multibyte, from one encoding to another. All file I/O operations performed through std::basic_fstream<CharT> use the std::codecvt<CharT, char, std::mbstate_t> facet of the locale imbued in the stream.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
四个专业所提供的标准库和所有语言环境中创建的对象在C + +程序实现
Original:
Four specializations are provided by the standard library and are implemented by all locale objects created in a C++ program:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
| Defined in header
<locale> | |
| std::codecvt<char, char, std::mbstate_t> | 身份的转换
Original: identity conversion The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
| std::codecvt<char16_t, char, std::mbstate_t> | UTF-16和UTF-8之间的转换(C++11 起)
Original: conversion between UTF-16 and UTF-8 (C++11 起) The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
| std::codecvt<char32_t, char, std::mbstate_t> | UTF-32和UTF-8(C++11 起)之间的转换
Original: conversion between UTF-32 and UTF-8 (C++11 起) The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
| std::codecvt<wchar_t, char, std::mbstate_t> | 区域设置特定的宽字符串和狭窄的,可能是多字节字符串之间的转换
Original: locale-specific conversion between wide string and narrow, possibly multibyte, string The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
目录 |
[编辑] 会员类型
| 会员类型
Original: Member type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Definition |
intern_type
|
internT
|
extern_type
|
externT
|
state_type
|
stateT
|
[编辑] 会员对象
| 会员名称
Original: Member name The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Type |
id (静态的)
|
std::locale::id |
[编辑] 成员函数
| 构造一个新codecvt方面 Original: constructs a new codecvt facet The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (公共成员函数) | |
| 解构一个codecvt方面 Original: destructs a codecvt facet The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (受保护的成员函数) | |
| 调用 do_out Original: invokes do_out The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (公共成员函数) | |
| 调用 do_in Original: invokes do_in The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (公共成员函数) | |
| 调用 do_unshift Original: invokes do_unshift The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (公共成员函数) | |
| 调用 do_encoding Original: invokes do_encoding The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (公共成员函数) | |
| 调用 do_always_noconv Original: invokes do_always_noconv The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (公共成员函数) | |
| 调用 do_length Original: invokes do_length The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (公共成员函数) | |
| 调用 do_max_length Original: invokes do_max_length The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (公共成员函数) | |
[编辑] 受保护的成员函数
| [虚拟的] </ SPAN></div></div>
|
转换成一个字符串,如写入文件时,从Internt的externT Original: converts a string from internT to externT, such as when writing to file The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (虚拟保护成员函数) |
| [虚拟的] </ SPAN></div></div>
|
将字符串转换,如从文件读取时,从externT到Internt的 Original: converts a string from externT to internT, such as when reading from file The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (虚拟保护成员函数) |
| [虚拟的] </ SPAN></div></div>
|
产生的externT不完全转化为字符序列终止符 Original: generates the termination character sequence of externT characters for incomplete conversion The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (虚拟保护成员函数) |
| [虚拟的] </ SPAN></div></div>
|
返回的externT需要产生一个Internt的字符的字符数,如果不变 Original: returns the number of externT characters necessary to produce one internT character, if constant The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (虚拟保护成员函数) |
| [虚拟的] </ SPAN></div></div>
|
该方面的测试,如果所有有效参数值的标识转换为编码 Original: tests if the facet encodes an identity conversion for all valid argument values The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (虚拟保护成员函数) |
| [虚拟的] </ SPAN></div></div>
|
计算将转换成给定的Internt的缓冲区消耗的externT字符串,该字符串的长度 Original: calculates the length of the externT string that would be consumed by conversion into given internT buffer The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (虚拟保护成员函数) |
| [虚拟的] </ SPAN></div></div>
|
返回的最大数目,可以被转换成一个单一的Internt的字符externT字符 Original: returns the maximum number of externT characters that could be converted into a single internT character The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (虚拟保护成员函数) |
Inherited from std::codecvt_base
| 会员类型
Original: Member type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Definition |
| enum result { ok, partial, error, noconv }; | 无作用域的枚举类型
Original: Unscoped enumeration type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
| 枚举常量
Original: Enumeration constant The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Definition |
ok
|
转换完成,没有错误
Original: conversion was completed with no error The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
partial
|
不是所有的源字符被转换了
Original: not all source characters were converted The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
error
|
遇到无效的字符
Original: encountered an invalid character The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
noconv
|
没有转换,输入和输出类型是相同的
Original: no conversion required, input and output types are the same The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
[编辑] 为例
下面的示例读取一个UTF-8文件使用的语言环境,实现了UTF-8转换codecvt <wchar_t, char, mbstate_t>
Original:
The following examples reads a UTF-8 file using a locale which implements UTF-8 conversion in codecvt<wchar_t, char, mbstate_t>
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
#include <iostream> #include <fstream> #include <string> #include <locale> #include <iomanip> int main() { // UTF-8 narrow multibyte encoding std::ofstream("text.txt") << u8"z\u00df\u6c34\U0001d10b"; // or u8"zß水𝄋" // or "\x7a\xc3\x9f\xe6\xb0\xb4\xf0\x9d\x84\x8b"; std::wifstream fin("text.txt"); fin.imbue(std::locale("en_US.UTF-8")); // this locale's codecvt<wchar_t, char, mbstate_t> // converts UTF-8 to UCS4 std::cout << "The UTF-8 file contains the following wide characters: \n"; for(wchar_t c; fin >> c; ) std::cout << "U+" << std::hex << std::setw(4) << std::setfill('0') << c << '\n'; }
Output:
The UTF-8 file contains the following wide characters: U+007a U+00df U+6c34 U+1d10b
[编辑] 另请参阅
| 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 |
| 定义字符转换错误 Original: defines character conversion errors The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (类模板) | |
| 创建名为locale的一个codecvt方面的 Original: creates a codecvt facet for the named locale The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (类模板) | |
| (C++11) |
之间的转换UTF-8和UCS2/UCS4 Original: converts between UTF-8 and UCS2/UCS4 The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (类模板) |
| (C++11) |
之间的转换UTF-16和UCS2/UCS4 Original: converts between UTF-16 and UCS2/UCS4 The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (类模板) |
| (C++11) |
converts between UTF-8 and UTF-16 (类模板) |
