Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Conservez la valeur des séquences d’échappement numériques dans les littéraux de chaîne u8 sans les encoder en UTF-8.
Utilisez ce commutateur pour augmenter la compatibilité croisée ou lorsqu’un caractère non utf-8 est incorporé dans un littéral de chaîne utf-8.
Syntax
/Zc:u8EscapeEncoding[-]
Remarks
En C++, les littéraux de chaîne de caractères u8 sont des séquences de char8_t encodées en UTF-8. Cet indicateur modifie la façon dont les séquences d’échappement numériques sont interprétées dans les u8 chaînes littérales. Le comportement sous /Zc:u8EscapeEncoding consiste à les encoder dans la chaîne sous la forme d’une valeur 8 bits char8_t unique. Le comportement sous /Zc:u8EscapeEncoding- est d’interpréter la valeur en tant que point de code Unicode. Lorsque la valeur est un point de code plus élevé dans Unicode, elle est encodée en tant que caractère multioctet. Le comportement des séquences de caractères universels est toujours de les encoder en tant qu’utf-8 indépendamment de /Zc:u8EscapeEncoding[-].
L’exemple suivant contient à la fois une séquence d’échappement hexadécimal \x et une séquence d’échappement universelle \u.
/Zc:u8EscapeEncoding[-] affecte l’encodage de la séquence d’échappement hexadécimal, mais la séquence d’échappement universelle est toujours encodée en utf-8. L’exemple de chaîne inclut également le caractère d’espace, qui est encodé comme 0x20 dans utf-8.
#include <cstdio>
int main()
{
const char8_t str[] = u8" \x00ff \u00ff ";
for(char8_t c : str) {
printf("0x%X ", c);
}
return 0;
}
Dans /Zc:u8EscapeEncoding, la séquence d’échappement \x00ff est codée sous la forme de 0xFF et la séquence de caractères universelle \u00ff est codée sous la forme de la séquence UTF-8 0xC3 0xBF. L’exemple de code génère :
0x20 0xFF 0x20 0xC3 0xBF 0x20 0x0
Sous /Zc:u8EscapeEncoding-, les valeurs des deux \x00ff et \u00ff sont réencodées en tant que séquence 0xC3 0xBFutf-8 . L’exemple de code génère :
0x20 0xC3 0xBF 0x20 0xC3 0xBF 0x20 0x0