std::text_encoding::literal
出自cppreference.com
< cpp | text | 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}"; }