【问题标题】:wxString format Unicode characterwxString 格式 Unicode 字符
【发布时间】:2015-07-03 00:18:56
【问题描述】:
for(int i='א'; i<='ת'; i++)
incList.Add( wxString::Format("%c", wxT(i));
我正在尝试使用 wxT 将 Unicode 字符添加到数组中。我收到此错误
error: 'Li' was not declared in this scope
是什么导致了错误,如何解决?谢谢。
【问题讨论】:
标签:
c++
unicode
wxwidgets
【解决方案1】:
wxT() 是这样定义的宏:
#ifdef UNICODE
# define wxT(x) L##x
#else // !Unicode
# define wxT(x) x
#endif
所以wxT(i) 当然会变成Li。它只能与字符串文字一起使用。
此外,wxT() 为什么要将 int 转换为字符串?为此使用itow。
【解决方案2】:
wxT() 用于操作字符串文字,而不是变量。
您可能想要类似于wxString::FromUTF8(chars) 或wxString mystring2(chars, wxConvUTF8) 的东西。简单地传递一个 char 数组作为参数也可以,但取决于当前的语言环境。
哦,当我们在做的时候......
for(int i='א'; i<='ת'; i++)
...请注意,在 C++ 源代码中使用基本字符集(基本上是 ASCII-7)之外的字符是实现定义的。您可能应该改用转义序列。