/Zc:u8EscapeEncoding (u8 dizelerinde sayısal kaçış dizisi kodlaması)

u8 dize sabitlerinde sayısal kaçış dizilerinin değerini UTF-8 olarak kodlamadan koruyun.

Platformlar arası uyumluluğu artırmak veya UTF-8 dize sabitinde UTF-8 olmayan bir karakter gömülü olduğunda bu seçeneği kullanın.

Syntax

/Zc:u8EscapeEncoding[-]

Remarks

C++ dilinde, u8 dize sabitleri, char8_t öğelerinin UTF-8 kodlu dizileridir. Bu bayrak, sayısal kaçış dizilerinin u8 dize sabitlerinde yorumlanma biçimini değiştirir. altındaki /Zc:u8EscapeEncoding davranış, bunları dizede tek bir 8 bit char8_t değer olarak kodlamaktır. altındaki /Zc:u8EscapeEncoding- davranış, değeri unicode kod noktası olarak yorumlamaktır. Değer Unicode'da daha yüksek bir kod noktası olduğunda, çok baytlı bir karakter olarak kodlanır. Evrensel karakter dizilerinin davranışı her zaman bunlardan bağımsız olarak utf-8 olarak kodlamaktır /Zc:u8EscapeEncoding[-].

Aşağıdaki örnek, hem bir onaltılık kaçış dizisi \x hem de bir evrensel kaçış dizisi \u içerir. /Zc:u8EscapeEncoding[-], onaltılık kaçış dizisinin kodlamasını etkiler, ancak evrensel kaçış dizisi her zaman utf-8 olarak kodlanır. Örnek dize, utf-8 olarak kodlanan 0x20 boşluk karakterini de içerir.

#include <cstdio>
int main()
{
    const char8_t str[] = u8" \x00ff \u00ff ";
    for(char8_t c : str) {
        printf("0x%X ", c);
    }
    return 0;
}

/Zc:u8EscapeEncoding altında, kaçış dizisi \x00ff0xFF olarak kodlanır ve evrensel karakter dizisi \u00ff utf-8 dizisi 0xC3 0xBF olarak kodlanır. Kod örneği çıkışları:

0x20 0xFF 0x20 0xC3 0xBF 0x20 0x0

altında /Zc:u8EscapeEncoding-, her ikisinin \x00ff ve \u00ff değerleri utf-8 dizisi 0xC3 0xBFolarak yeniden kodlanır. Kod örneği çıkışları:

0x20 0xC3 0xBF 0x20 0xC3 0xBF 0x20 0x0

Ayrıca bakınız

/Zc (Uyumluluk)