std:: codecvt_mode
|
Défini dans l'en-tête
<codecvt>
|
||
|
enum
codecvt_mode
{
consume_header
=
4
,
|
(depuis C++11)
(obsolète en C++17) (supprimé en C++26) |
|
Les facettes
std::codecvt_utf8
,
std::codecvt_utf16
, et
std::codecvt_utf8_utf16
acceptent une valeur optionnelle de type
std::codecvt_mode
comme argument de template, qui spécifie les fonctionnalités optionnelles de la conversion de chaîne unicode.
Constantes
|
Défini dans l'en-tête
<locale>
|
|
| Énumérateur | Signification |
little_endian
|
suppose que l'entrée est en ordre des octets petit-boutiste (s'applique uniquement à l'entrée UTF-16, l'ordre par défaut est gros-boutiste) |
consume_header
|
consomme la marque d'ordre des octets, si présente au début de la séquence d'entrée, et (dans le cas d'UTF-16) s'appuie sur l'ordre des octets qu'elle spécifie pour décoder le reste de l'entrée |
generate_header
|
génère la marque d'ordre des octets au début de la séquence de sortie |
Les marques d'ordre des octets reconnues sont :
0xfe 0xff
|
UTF-16 big-endian |
0xff 0xfe
|
UTF-16 little-endian |
0xef 0xbb 0xbf
|
UTF-8 (aucun effet sur l'endianité) |
Si
std::consume_header
n'est pas sélectionné lors de la lecture d'un fichier commençant par une marque d'ordre des octets, le caractère Unicode U+FEFF (espace insécable de largeur nulle) sera lu comme premier caractère du contenu de la chaîne.
Exemple
L'exemple suivant illustre la consommation du BOM UTF-8 :
#include <codecvt> #include <cwchar> #include <fstream> #include <iostream> #include <locale> #include <string> int main() { // UTF-8 data with BOM std::ofstream{"text.txt"} << "\ufeffz\u6c34\U0001d10b"; // read the UTF-8 file, skipping the BOM std::wifstream fin{"text.txt"}; fin.imbue(std::locale(fin.getloc(), new std::codecvt_utf8<wchar_t, 0x10ffff, std::consume_header>)); for (wchar_t c; fin.get(c);) std::cout << std::hex << std::showbase << (std::wint_t)c << '\n'; }
Sortie :
0x7a 0x6c34 0x1d10b
Voir aussi
|
convertit entre les encodages de caractères, y compris UTF-8, UTF-16, UTF-32
(modèle de classe) |
|
|
(C++11)
(déprécié en C++17)
(supprimé en C++26)
|
convertit entre UTF-8 et UCS-2/UCS-4
(modèle de classe) |
|
(C++11)
(déprécié en C++17)
(supprimé en C++26)
|
convertit entre UTF-16 et UCS-2/UCS-4
(modèle de classe) |
|
(C++11)
(déprécié en C++17)
(supprimé en C++26)
|
convertit entre UTF-8 et UTF-16
(modèle de classe) |