wxString类与char,wchar的相互转换(转)

 

在使用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);

你可能感兴趣的:(linux,windows,String,跨平台)