程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了我可以从 wxWidget wxTextCtrl 读取 åäö 吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决我可以从 wxWidget wxTextCtrl 读取 åäö 吗??

开发过程中遇到我可以从 wxWidget wxTextCtrl 读取 åäö 吗?的问题如何解决?下面主要结合日常开发的经验,给出你关于我可以从 wxWidget wxTextCtrl 读取 åäö 吗?的解决方法建议,希望对你解决我可以从 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,请注明来意。