std::text_encoding:: literal
|
static
consteval text_encoding literal
(
)
noexcept
;
|
(seit C++26) | |
Konstruiert ein neues
text_encoding
-Objekt, das die
gewöhnliche Zeichenliteral-Codierung
repräsentiert. Es wird verwendet, um die Zeichencodierung zu bestimmen, die auf gewöhnliche Zeichen- oder Zeichenkettenliterale angewendet wird (z.B.
"This is literal"
).
Diese Funktion ist gelöscht, es sei denn, der CHAR_BIT ist 8 .
Inhaltsverzeichnis |
Parameter
(keine)
Rückgabewert
Das Objekt, das die Darstellung der gewöhnlichen Literalkodierung enthält.
Hinweise
Diese Funktion kann durch die Konstruktion von
text_encoding
mit compilerspezifischen Builtin-Makros wie
__clang_literal_encoding__
von Clang, oder
__GNUC_EXECUTION_CHARSET_NAME
von GCC implementiert werden. Diese Makros, die zur Kompilierzeit bekannt sind, expandieren zu einem schmalen String-Literal, das den Namen des verwendeten schmalen Ausführungszeichensatzes enthält (gewöhnliche Literalkodierung).
Der von
literal
(
)
zurückgegebene Wert kann von Compiler-Optionen wie
-fexec-charset=
encoding-name
in GCC oder Clang oder
/execution-charset:
encoding-name
in MSVC abhängen.
Beispiel
Dieses Beispiel demonstriert die Behauptung, dass die gewöhnliche Literalkodierung UTF-8 sein sollte.
#include <text_encoding> static_assert(std::text_encoding::literal() == std::text_encoding::UTF8); int main() { // if the literal encoding is UTF-8, then this unprefixed string literal is // encoded as UTF-8 constexpr char green_heart[] = "\N{GREEN HEART}"; // this prefixed string literal is always encoded as UTF-8 regardless of the // literal encoding constexpr char8_t green_heart_u8[] = u8"\N{GREEN HEART}"; }