std::text_encoding:: literal
|
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}"; }