Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Pertahankan nilai urutan escape numerik dalam u8 literal string tanpa mengodekannya sebagai utf-8.
Gunakan sakelar ini untuk meningkatkan kompatibilitas lintas platform atau saat karakter non-UTF-8 disematkan ke dalam sebuah literal string UTF-8.
Syntax
/Zc:u8EscapeEncoding[-]
Remarks
Dalam C++, u8 string literal merupakan urutan char8_t yang dikodekan dalam UTF-8. Flag ini mengubah cara urutan escape numerik ditafsirkan dalam literal string u8. Perilaku di bawah /Zc:u8EscapeEncoding ini adalah mengodekannya dalam string sebagai nilai 8-bit char8_t tunggal. Perilaku di bawah /Zc:u8EscapeEncoding- ini adalah untuk menginterpretasikan nilai sebagai titik kode unicode. Ketika nilai adalah titik kode yang lebih tinggi di Unicode, nilai tersebut dikodekan sebagai karakter multibyte. Perilaku urutan karakter universal adalah selalu mengodekannya sebagai utf-8, terlepas dari /Zc:u8EscapeEncoding[-].
Contoh berikut berisi urutan escape hex \x dan urutan escape universal \u.
/Zc:u8EscapeEncoding[-] mempengaruhi pengodean urutan pelarian hex, tetapi urutan pelarian universal selalu dikodekan sebagai utf-8. Contoh string juga menyertakan karakter spasi, yang dikodekan seperti 0x20 dalam utf-8.
#include <cstdio>
int main()
{
const char8_t str[] = u8" \x00ff \u00ff ";
for(char8_t c : str) {
printf("0x%X ", c);
}
return 0;
}
Dalam /Zc:u8EscapeEncoding, urutan escape \x00ff dikodekan sebagai 0xFF, dan urutan karakter universal \u00ff dikodekan sebagai urutan UTF-8 0xC3 0xBF. Contoh kode menghasilkan output:
0x20 0xFF 0x20 0xC3 0xBF 0x20 0x0
Dalam /Zc:u8EscapeEncoding-, nilai \x00ff dan \u00ff keduanya dienkode ulang sebagai urutan utf-8 0xC3 0xBF. Contoh kode menghasilkan output:
0x20 0xC3 0xBF 0x20 0xC3 0xBF 0x20 0x0