Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Behalten Sie den Wert numerischer Escape-Sequenzen in u8 Zeichenfolgenliteralen bei, ohne sie als UTF-8 zu kodieren.
Verwenden Sie diesen Schalter, um die plattformübergreifende Kompatibilität zu verbessern oder wenn ein Nicht-UTF-8-Zeichen in einem UTF-8-Stringliteral enthalten ist.
Syntax
/Zc:u8EscapeEncoding[-]
Remarks
In C++ sind u8 Stringliterale UTF-8-kodierte Sequenzen von char8_t. Dieses Flag ändert, wie numerische Escape-Sequenzen in String-Literalen von u8 interpretiert werden. Das Verhalten unter /Zc:u8EscapeEncoding ist, sie in der Zeichenfolge als einen einzelnen 8-Bit-char8_t-Wert zu codieren. Das Verhalten unter /Zc:u8EscapeEncoding- besteht darin, den Wert als Unicode-Codepunkt zu interpretieren. Wenn der Wert ein höherer Codepunkt in Unicode ist, wird er als Multibyte-Zeichen codiert. Das Verhalten universeller Zeichensequenzen besteht immer darin, sie unabhängig von /Zc:u8EscapeEncoding[-]utf-8 zu codieren.
Das folgende Beispiel enthält sowohl eine Hex-Escapesequenz \x als auch eine universelle Escapesequenz \u.
/Zc:u8EscapeEncoding[-] wirkt sich auf die Codierung der Hex-Escapesequenz aus, aber die universelle Escapesequenz wird immer als utf-8 codiert. Die Beispielzeichenfolge enthält auch das Leerzeichen, das wie 0x20 in utf-8 codiert ist.
#include <cstdio>
int main()
{
const char8_t str[] = u8" \x00ff \u00ff ";
for(char8_t c : str) {
printf("0x%X ", c);
}
return 0;
}
Unter /Zc:u8EscapeEncoding ist die Escape-Sequenz \x00ff als 0xFF codiert, und die universelle Zeichensequenz \u00ff ist als utf-8-Sequenz 0xC3 0xBF codiert. Das Codebeispiel gibt Folgendes aus:
0x20 0xFF 0x20 0xC3 0xBF 0x20 0x0
Unter /Zc:u8EscapeEncoding- werden die Werte sowohl von \x00ff als auch von \u00ff als die UTF-8-Sequenz 0xC3 0xBF neu codiert. Das Codebeispiel gibt Folgendes aus:
0x20 0xC3 0xBF 0x20 0xC3 0xBF 0x20 0x0