查看: 1484|回复: 8

HUD显示中文为什么不支持std::string类

[复制链接]

该用户从未签到

发表于 2014-6-27 21:40:44 | 显示全部楼层 |阅读模式
想让HUD支持中文,但是HUD似乎只认wchar_t类型,想知道这是为什么?
C++中有很类型支持中文显示,尤其是标准库std::string或者std::wstring都支持中文,最关键的是string类型操作起来实在是太方便了,而wchar_t则相对比较麻烦,

以后osg HUD显示时能否考虑支持string类型

该用户从未签到

发表于 2014-6-28 16:26:02 | 显示全部楼层
自己写个函数转换一下不就行了么。

该用户从未签到

 楼主| 发表于 2014-6-28 21:40:15 | 显示全部楼层
smash 发表于 2014-6-28 16:26
自己写个函数转换一下不就行了么。

我写了个函数,转换完了,所以才有了上面的话。
看C++的书鼓励使用string,不鼓励c风格字符串。
而且string操作特别方便,不用很多函数,不用考虑结尾等。

该用户从未签到

发表于 2014-6-28 22:56:14 | 显示全部楼层
taylor66 发表于 2014-6-28 21:40
我写了个函数,转换完了,所以才有了上面的话。
看C++的书鼓励使用string,不鼓励c风格字符串。
而且st ...

有std::wstring的,不要过于死抠书本了。

该用户从未签到

 楼主| 发表于 2014-6-29 10:37:47 | 显示全部楼层
smash 发表于 2014-6-28 22:56
有std::wstring的,不要过于死抠书本了。

额,我知道啊,std::wstring,HUD并不支持,好伐

该用户从未签到

发表于 2014-6-29 12:02:42 | 显示全部楼层
支不支持中文本质上和字符串的编码有关。

std::string中文需要转码为UTF8,如果是QT前台,qt提供转码
osgText::Text->setText(std::string, osgText::String::ENCODING_UTF8);

osgText虽然不直接支持wstring ,但这样也相当于支持啦
std::wstring wstr(L"中文");
osgText::Text->setText(wstr.c_str());

该用户从未签到

发表于 2014-6-29 13:35:22 | 显示全部楼层
taylor66 发表于 2014-6-29 10:37
额,我知道啊,std::wstring,HUD并不支持,好伐

上面的朋友正解,.c_str()就行。

该用户从未签到

发表于 2014-6-30 22:10:39 | 显示全部楼层
这个没有关系呀,直接转换一下就行了,有两个C语言的标准库函数实现这种转换。
  1. wcstombs();
  2. mbstowcs();
复制代码
很方便的。

该用户从未签到

 楼主| 发表于 2014-7-2 10:05:55 | 显示全部楼层
smash 发表于 2014-6-29 13:35
上面的朋友正解,.c_str()就行。

试了一下真可以,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表