Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1801494
  • 博文数量: 290
  • 博客积分: 10653
  • 博客等级: 上将
  • 技术积分: 3178
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-24 23:08
文章存档

2013年(6)

2012年(15)

2011年(25)

2010年(86)

2009年(52)

2008年(66)

2007年(40)

分类: C/C++

2010-04-25 15:55:07

在使用wxWidgets库跨平台开发的时候,在遇到字符集的时候很费劲,往往在WINDOWS下能正常显示到了Linux下就是乱码了,这时最好 是统一用宽字符集,在wx库中,使用宽字符集时需要各种各样的转换,而且往往随着define的不同情况不一样,我到现在都没完全明白。凭着写wx程序的 经验,总结以下转换示例,以后要用的时候,直接照搬下面的方法。当然还有其它的方法,这里没有举出来。

wxString转换
wxString logBuf;
wxLogMessage( wxT("%s"), logBuf.c_str() );
 

wxString->char*

        wxString wx_string=_T("hello");

        char ansi_string[30];

        strcpy(ansi_string,wx_string.mb_str());

char*->wxString

        char ansii_string[100] = "我hello";

        wxString wx_string(ansii_string,wxConvUTF8);

wxString->TCHAR*

        wxString wx_string=_T("hello");

        TCHAR wchar_string[30];

        wcscpy(wchar_string,wx_string.wc_str());

TCHAR*->wxString

        TCHAR *tchar_string = _T("hello");

        wxString wx_string(tchar_string,wxConvUTF8);
 
char*->TCHAR*

        char *ansii_string = "hello";

        int size = strlen(ansii_string);

        TCHAR unicode_string[100];

        mbstowcs(unicode_string, ansii_string, size+1);

TCHAR*->char*

        TCHAR* unicode_string=_T("unicode string");

        int size= wcslen(unicode_string);

        char ansi_string[30];

        wcstombs(ansi_string, unicode_string, size+1);


wxString Message("打开源文件失败!",wxConvLocal);
wxMessageBox(Message);


char rsdata[100];
sprintf(rsdata,"刚读取的数据存放在:");
wxString mess(rsdata,wxConvLocal);
wxMessageBox(mess);

阅读(2439) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~