在C ++中将分数(1 / 8,3 / 8,5 / 8,7 / 8)转换为UTF-8
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C ++中将分数(1 / 8,3 / 8,5 / 8,7 / 8)转换为UTF-8相关的知识,希望对你有一定的参考价值。
我必须使用符号显示分数,我似乎无法显示这些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
打印它们
以上是关于在C ++中将分数(1 / 8,3 / 8,5 / 8,7 / 8)转换为UTF-8的主要内容,如果未能解决你的问题,请参考以下文章