我正在尝试将 LaTeX 转义码(例如\alpha
)解析为 Unicode(数学)字符(即U+1D6FC
)。
现在这意味着我正在使用这个symbols
解析器(规则):
struct greek_lower_case_letters_ : x3::symbols<char32_t>
{
greek_lower_case_letters_::greek_lower_case_letters_()
{
add("alpha", U'\u03B1');
}
} greek_lower_case_letter;
这工作正常,但意味着我得到了std::u32string
一个结果。我想要一种优雅的方式来将 Unicode 代码点保留在代码中(可能是为了未来的自动化)和维护原因。有没有办法让这种解析器解析成 UTF-8 std::string
?
我曾想过将symbols
结构解析为 a std::string
,但这将非常低效(我知道,过早的优化 bla bla)。
我希望有一些优雅的方法,而不是通过一堆箍来让这个工作(symbols
在结果中附加字符串)。
我确实担心使用代码点值并想要 UTF8 会产生转换的运行时成本(或者是否存在constexpr
UTF32->UTF8 转换可能?)。