在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。顺便说一句,如果你将wcoutcout一起使用,该程序最有可能崩溃。所以你可能想要将这些unicode字符存储在普通的UTF-8 std::string而不是wchar_t中,并使用std::cout打印它们

以上是关于在C ++中将分数(1 / 8,3 / 8,5 / 8,7 / 8)转换为UTF-8的主要内容,如果未能解决你的问题,请参考以下文章

在 Mac XAMPP 中将 PHP 5.3.1 升级到 5.3.6

如何在python中将列表拆分为没有重复元素的子集

在c ++中将单词转换为数字

在python中将列表转换为嵌套列表

如何在spark中将rdd数据一分为二?

如何在java中将二维数组拆分为多个不同大小的二维数组