Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Mantieni il valore delle sequenze di escape numeriche nei u8 valori letterali di stringa senza codificarle come UTF-8.
Usare questa opzione per aumentare la compatibilità tra sistemi o quando un carattere non UTF-8 è incorporato in un letterale di stringa UTF-8.
Syntax
/Zc:u8EscapeEncoding[-]
Remarks
In C++, u8 i valori letterali stringa sono sequenze con codifica utf-8 di char8_t. Questo flag modifica il modo in cui le sequenze di escape numeriche vengono interpretate nei u8 valori letterali stringa. Il comportamento con /Zc:u8EscapeEncoding consiste nel codificarli nella stringa come un singolo valore char8_t a 8 bit. Il comportamento in /Zc:u8EscapeEncoding- consiste nell'interpretare il valore come punto di codice Unicode. Quando il valore è un punto di codice superiore in Unicode, viene codificato come carattere multibyte. Il comportamento delle sequenze di caratteri universali è sempre quello di codificarli come utf-8 indipendentemente da /Zc:u8EscapeEncoding[-].
L'esempio seguente contiene sia una sequenza di escape esadecimale \x che una sequenza di escape universale \u.
/Zc:u8EscapeEncoding[-] influisce sulla codifica della sequenza di escape esadecimale, ma la sequenza di escape universale viene sempre codificata come utf-8. La stringa di esempio include anche il carattere spazio, codificato come 0x20 in utf-8.
#include <cstdio>
int main()
{
const char8_t str[] = u8" \x00ff \u00ff ";
for(char8_t c : str) {
printf("0x%X ", c);
}
return 0;
}
Con /Zc:u8EscapeEncoding, la sequenza di escape \x00ff viene codificata come 0xFF e la sequenza di caratteri universale \u00ff viene codificata come la sequenza utf-8 0xC3 0xBF. L'esempio di codice restituisce:
0x20 0xFF 0x20 0xC3 0xBF 0x20 0x0
In /Zc:u8EscapeEncoding-i valori di \x00ff e \u00ff vengono codificati nuovamente come sequenza 0xC3 0xBFutf-8 . L'esempio di codice restituisce:
0x20 0xC3 0xBF 0x20 0xC3 0xBF 0x20 0x0