std::text_encoding::literal
来自cppreference.com
< cpp | locale | text encoding
static consteval text_encoding literal() noexcept; |
(C++26 起) | |
构造一个新的 text_encoding
对象,表示普通字符字面量编码。它用于确定普通字符或字符串字面量(如 "This is literal")所应用的字符编码。
除非 CHAR_BIT 为 8,否则这个函数被删除。
参数
(无)
返回值
保有普通字面量编码的表示的对象。
注解
这个函数可以利用特定于编译器的内建宏(如 Clang 的 __clang_literal_encoding__
或 GCC 的 __GNUC_EXECUTION_CHARSET_NAME
)构造 text_encoding
来予以实现。这些宏是编译时已知的,它们展开为包含所使用的窄执行字符集(普通字面量编码)的名字的窄字符串字面量。
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}"; }