Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Zachovejte hodnotu číselných únikových sekvencí v literálech řetězců u8 , aniž by byly kódovány jako UTF-8.
Tento přepínač použijte pro zajištění širší kompatibility nebo pokud je do řetězcového literálu UTF-8 vložen znak, který není v UTF-8.
Syntax
/Zc:u8EscapeEncoding[-]
Remarks
V jazyce C++ jsou u8 řetězcové literály posloupnosti char8_t kódované v UTF-8. Tento příznak změní způsob interpretace číselných řídicích sekvencí v u8 řetězcových literálech. Chování v rámci /Zc:u8EscapeEncoding spočívá v jejich zakódování do řetězce jako jediné 8bitové hodnoty char8_t. Chování pod /Zc:u8EscapeEncoding- spočívá v interpretaci hodnoty jako bodu kódu Unicode. Pokud je hodnota vyšším bodem kódu v Kódu Unicode, je kódována jako vícebajtový znak. Posloupnosti univerzálních znaků se vždy kódují jako UTF-8 bez ohledu na /Zc:u8EscapeEncoding[-].
Následující příklad obsahuje hexadecimální řídicí sekvenci \x a univerzální řídicí sekvenci \u.
/Zc:u8EscapeEncoding[-] ovlivňuje kódování hexadecimální escape sekvence, ale univerzální escape sekvence je vždy kódována v UTF-8. Ukázkový řetězec obsahuje také znak mezery, který je kódován jako 0x20 utf-8.
#include <cstdio>
int main()
{
const char8_t str[] = u8" \x00ff \u00ff ";
for(char8_t c : str) {
printf("0x%X ", c);
}
return 0;
}
V /Zc:u8EscapeEncoding je escape sekvence \x00ff zakódována jako 0xFF a sekvence univerzálního znaku \u00ff je zakódována jako sekvence UTF-8 0xC3 0xBF. Výstupy v příkladu kódu:
0x20 0xFF 0x20 0xC3 0xBF 0x20 0x0
V /Zc:u8EscapeEncoding- jsou hodnoty jak \x00ff, tak \u00ff překódovány jako posloupnost UTF-8 0xC3 0xBF. Výstupy v příkladu kódu:
0x20 0xC3 0xBF 0x20 0xC3 0xBF 0x20 0x0