Namespaces
Variants

std::text_encoding:: literal

From cppreference.net
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}";
}