Namespaces
Variants

std::text_encoding:: literal

From cppreference.net
static consteval text_encoding literal ( ) noexcept ;
(C++26 起)

构造一个新的 text_encoding 对象,表示 普通字符字面量编码 。该对象用于确定应用于普通字符或字符串字面量(例如 "This is literal" )的字符编码。

此函数在 CHAR_BIT 不等于 8 时将被删除。

目录

参数

(无)

返回值

保存普通字面量编码表示的对象。

注释

此函数可通过使用编译器特定的内置宏构造 text_encoding 来实现,例如来自Clang的 __clang_literal_encoding__ ,或来自GCC的 __GNUC_EXECUTION_CHARSET_NAME 。这些在编译时已知的宏会展开为一个窄字符串字面量,其中包含所使用的窄执行字符集名称(普通字面量编码)。

literal ( ) 返回的值可能取决于编译器选项,例如 GCC 或 Clang 中的 -fexec-charset= encoding-name 或 MSVC 中的 /execution-charset: encoding-name

示例

本示例演示了关于普通字面量编码应为UTF-8的断言。

#include <text_encoding>
static_assert(std::text_encoding::literal() == std::text_encoding::UTF8);
int main()
{
    // 若字面量编码为UTF-8,则此前缀字符串字面量将以UTF-8编码
    constexpr char green_heart[] = "\N{GREEN HEART}";
    // 带前缀字符串字面量始终以UTF-8编码,与字面量编码设置无关
    constexpr char8_t green_heart_u8[] = u8"\N{GREEN HEART}";
}