首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在数组中存储Unicode字符?

如何在数组中存储Unicode字符?
EN

Stack Overflow用户
提问于 2021-06-05 01:53:25
回答 2查看 212关注 0票数 0

我正在编写一个C++ wxWidgets计算器应用程序,并且我需要将运算符的字符存储在一个数组中。我有像int ops[10] = {'+', '-', '*', '/', '^'};这样的东西。如果我还想在数组中存储字符,比如÷×,这样它们也可以在wxTextCtrl和自定义按钮中显示,该怎么办?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-05 02:10:38

这实际上是一个毛骨悚然的问题,尽管它一开始看起来不像。您的最佳选择是使用Unicode控制序列,而不是使用源代码编辑器添加特殊字符。

wxString ops[]={L"+", L"-", L"*", L"\u00F7"};

您需要确保正确编译了√、÷和×等字符。

您的源文件(.cpp)需要以一种确保编译器生成正确字符的方式来存储它们。这比看起来更难,特别是当涉及到svn、git、windows和linux时。

大多数情况下,.cpp文件是ANSI或8位编码的,不支持开箱即用的Unicode常量。

您可以将源文件保存为UTF-8代码页,以便保留这些字符。但并非所有编译器都接受UTF-8

最好的方法是使用Unicode控制字符对它们进行编码。wxString div(L"\u00F7");是÷的字符串。或者在您的情况下,可能是wxChar div('\u00F7')。您必须在Unicode控制序列中查找其他特殊字符。这样,您的源文件将只包含ANSI字符,并将被所有编译器接受。在与不同的操作系统平台交换源文件时,还可以避免代码页问题。

然后,您必须确保使用UNICODE感知来编译wxWidgets (尽管我认为这是wx3.x的默认设置)。然后,如果您的操作系统支持它,这些特殊字符应该会显示出来。

阅读Unicode控件(维基百科)。在utf8everywhere.org中也可以找到良好的输入。文件.editorconfig也可以提供帮助。

票数 1
EN

Stack Overflow用户

发布于 2021-06-05 02:03:58

我更喜欢使用wchar_t而不是int

代码语言:javascript
复制
wchar_t ops[10] = {L'+', L'-', L'*', L'/', L'^', L'√', L'÷', L'×'};

它们可以简单地支持您所描述的字符,并且可以简单而正确地转换为wxString

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

https://stackoverflow.com/questions/67841901

复制
相关文章

相似问题

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