大佬教程收集整理的这篇文章主要介绍了我可以从 wxWidget wxTextCtrl 读取 åäö 吗?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在 C++ 中。我有一个 wxTexfIEld 并希望用户输入单词的瑞典语翻译。
一切正常,直到用户输入 å、ä 或 ö (utf8)。 将 wxString 转换为 utf8 不是问题 - 问题是我什至无法将文本从字段中取出。对于我使用的其余文本(其中 ans 是指向文本字段的指针)。任何的想法?对于我只使用的其他字符串,它非常有效。
std::string ch = std::string((ans->GetValue()));
您不能在不指定编码的情况下将任意 Unicode 字符串转换为 std::string
。默认情况下,编码是当前语言环境的编码,尤其是在 Windows 下,不一定是 UTF-8,这几乎肯定是您想要使用的,因为在此编码中无法表示的字符将在转换过程中丢失。>
所以正确的做法是明确使用 ans->GetValue().ToUTF8()
,然后您的 std::string
将包含您的字符的 UTF-8 编码表示。当然,您需要意识到字符串的长度不会为 1,即使是单个字符,因此您可能需要使用 std::wString
来代替。
附言在 wxWidgets 3.1.5+ 中,你也有 utf8_String()
直接返回 std::string
,所以如果你有足够新的版本,你也可以使用这个。
@H_209_7@make sense but ... I tried it and I do this: wxString temp = ans->GetValue().ToUTF8(); info->Insert(ch2,0); std::string temp2 =std::string(ch2.mb_str()); std::cout<<"temp2:"<<temp2<<'\n'; std::cout<<"temp:"<<temp<<'\n';
并且 temp 和 temp2 似乎都是空的。信息字段中没有任何内容,终端中也没有任何内容。我错过了什么?
以上是大佬教程为你收集整理的我可以从 wxWidget wxTextCtrl 读取 åäö 吗?全部内容,希望文章能够帮你解决我可以从 wxWidget wxTextCtrl 读取 åäö 吗?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。