首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C++中将分数(1/8、3/8、5/8、7/8)转换为UTF-8

在C++中将分数(1/8、3/8、5/8、7/8)转换为UTF-8
EN

Stack Overflow用户
提问于 2017-12-21 21:53:44
回答 2查看 200关注 0票数 0

我必须用符号来显示分数,而且我似乎无法显示这些4。

代码语言:javascript
复制
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),但对于这些分数也是这样:

代码语言:javascript
复制
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但没有成功.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-21 22:09:17

对于UTF-8,您需要存储多字节字符-包含在一个或多个字节中的字符。通常这些存储在std::string中。

代码语言:javascript
复制
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数组。

代码语言:javascript
复制
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";
票数 2
EN

Stack Overflow用户

发布于 2017-12-21 22:02:37

使用wchar_t而不是char。还要注意,您不能使用wchar_t打印std::cout,您需要使用宽版本的std::cout,即std::wcout。顺便说一句,如果将wcoutcout一起使用,程序很可能会崩溃。因此,您可能希望将这些unicode字符存储在普通的UTF-8 std::string中而不是wchar_t中,并使用std::cout打印它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47933227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档