我必须使用符号显示分数,我似乎无法显示这些4.使用
char UCP_VULGAR_FRACTION_ONE_HALF_UTF8 = L'\u00BD';
char UCP_VULGAR_FRACTION_ONE_QUARTER_UTF8 = L'\u00BC';
char UCP_VULGAR_FRACTION_THREE_QUARTERS_UTF8 = L'\u00BE';
我可以得到1/2,1/4和3/4以显示正常(cout<< (char)UCP_VULGAR_FRACTION_ONE_HALF_UTF8
),但对这些分数做同样的事情:
char UCP_VULGAR_FRACTION_ONE_EIGHTH_UTF8 = L'\u215B';
char UCP_VULGAR_FRACTION_THREE_EIGHTHS_UTF8 = L'\u215C';
char UCP_VULGAR_FRACTION_FIVE_EIGHTHS_UTF8 = L'\u215D';
char UCP_VULGAR_FRACTION_SEVEN_EIGHTHS_UTF8 = L'\u215E';
给我[
,\
,]
和^
。我究竟做错了什么?我试过g_unichar_to_utf8
没有成功......
对于UTF-8
,您需要存储多字节字符 - 包含在一个或多个字节中的字符。通常这些存储在std::string
中:
std::string const UCP_VULGAR_FRACTION_ONE_EIGHTH_UTF8 = u8"\u215B";
std::string const UCP_VULGAR_FRACTION_THREE_EIGHTHS_UTF8 = u8"\u215C";
std::string const UCP_VULGAR_FRACTION_FIVE_EIGHTHS_UTF8 = u8"\u215D";
std::string const UCP_VULGAR_FRACTION_SEVEN_EIGHTHS_UTF8 = u8"\u215E";
或者可能是一个空终止的char数组:
char const* UCP_VULGAR_FRACTION_ONE_EIGHTH_UTF8 = "\u215B";
char const* UCP_VULGAR_FRACTION_THREE_EIGHTHS_UTF8 = "\u215C";
char const* UCP_VULGAR_FRACTION_FIVE_EIGHTHS_UTF8 = "\u215D";
char const* UCP_VULGAR_FRACTION_SEVEN_EIGHTHS_UTF8 = "\u215E";
使用wchar_t
而不是char
。另外请注意,你不能使用wchar_t
打印std::cout
,你需要使用std::cout
的宽版std::wcout
。顺便说一句,如果你将wcout
与cout
一起使用,该程序最有可能崩溃。所以你可能想要将这些unicode字符存储在普通的UTF-8 std::string
而不是wchar_t
中,并使用std::cout
打印它们