UniCode下字符常见的一些问题(二)
2016-08-26 11:49
267 查看
Unicode下字符转换
.
TCHAR是一种字符串类型,它让你在以MBCS和Unicode来build程序时可以使用同样的代码,不需要使用繁琐的宏定义来包含你的代码,而char代表ASCII的字符
所以用MBCS来build时,TCHAR是char,使用UNICODE时,TCHAR是wchar_t.至于String,CString他们都是一种封装了字串处理的操作!你可以打开他们的源代码找寻究竟! CString属于VC的类库string是标准C++的类库string.h是C的库函数。
char*、TCHAR*转换CString CString str(*)*
typedef ATL::CStringT< wchar_t, StrTraitMFC_DLL< wchar_t > > CStringW;
typedef ATL::CStringT< char, StrTraitMFC_DLL< char > > CStringA;
typedef ATL::CStringT< TCHAR, StrTraitMFC_DLL< TCHAR > > CString;
.
TCHAR是一种字符串类型,它让你在以MBCS和Unicode来build程序时可以使用同样的代码,不需要使用繁琐的宏定义来包含你的代码,而char代表ASCII的字符
if def UNICODE TCHAR = wchar else TCHAR = char
所以用MBCS来build时,TCHAR是char,使用UNICODE时,TCHAR是wchar_t.至于String,CString他们都是一种封装了字串处理的操作!你可以打开他们的源代码找寻究竟! CString属于VC的类库string是标准C++的类库string.h是C的库函数。
char*、TCHAR*转换CString CString str(*)*
/********************************************************************** * 函数: TransCStringToTCHAR * 描述:将CString 转换为 TCHAR* * 日期: ***********************************************************************/ TCHAR* CPublic::CString2TCHAR(CString &str) { int iLen = str.GetLength(); TCHAR* szRs = new TCHAR[iLen]; lstrcpy(szRs, str.GetBuffer(iLen)); str.ReleaseBuffer(); return szRs; } /*********************************************************************** * 函数: THCAR2Char * 描述:将TCHAR* 转换为 char* * 日期: ************************************************************************/ char* CPublic::THCAR2char(TCHAR* tchStr) { int iLen = 2*wcslen(tchStr);//CString,TCHAR汉字算一个字符,因此不用普通计算长度 char* chRtn = new char[iLen+1] wcstombs(chRtn,tchStr,iLen+1);//转换成功返回为非负值 return chRtn; } /************************************************************************ * 函数: char2tchar * 描述:将 char* 转换为 TCHAR* * 日期: *************************************************************************/ TCHAR *char2tchar(char *str) { int iLen = strlen(str); TCHAR *chRtn = new TCHAR[iLen+1]; mbstowcs(chRtn, str, iLen+1); return chRtn; } /************************************************************************ * 函数: CString2char * 描述:将CString转换为 char* * 日期: ************************************************************************/ char* CPublic::CString2char(CString &str) { int len = str.GetLength(); char* chRtn = (char*)malloc((len*2+1)*sizeof(char));//CString的长度中汉字算一个长度 memset(chRtn, 0, 2*len+1); USES_CONVERSION; strcpy((LPSTR)chRtn,OLE2A(str.LockBuffer())); return chRtn; }
typedef ATL::CStringT< wchar_t, StrTraitMFC_DLL< wchar_t > > CStringW;
typedef ATL::CStringT< char, StrTraitMFC_DLL< char > > CStringA;
typedef ATL::CStringT< TCHAR, StrTraitMFC_DLL< TCHAR > > CString;
**CStringA 转char*** CStringA m_strDeviceTypeName; char *strName = new char[256]; memset(strName, 0, sizeof(char)*256); **strncpy_s**(strName, 256, m_strDeviceTypeName, 256); **CString 转wchar_t*** CString m_strDeviceUniqueId; wchar_t * strName = new wchar_t[256]; memset(strName, 0, sizeof(wchar_t)*256); **wcsncpy**(strName, m_strDeviceUniqueId, 256);
相关文章推荐
- UniCode下字符常见的一些问题(一)
- [转载]VC 和 MFC 的一些常见问题
- js一些常见的问题与解决代码(转自www.51js.com)
- 一些常见的问题与解决代码!(二)(JS)
- JfreeChart使用经验总结(分析了使用中碰到的一些常见问题)
- SQL SERVER中一些常见性能问题的总结[转]
- .NET中一些常见代码的性能问题
- .NET中一些常见代码的性能问题
- .NET中一些常见代码的性能问题
- 一些常见问题(转贴)
- SQL SERVER中一些常见性能问题的总结(转载)
- 初学者的一些常见问题的解答
- 一些常见的问题与解决代码!(精典) 4
- 一些常见的问题与解决代码!(四)(JS)
- js一些常见的问题与解决代码(2)(转自www.51js.com)
- ACCESS常见的一些问题及解决的方法
- 一些页面常见的问题与解决代码
- 一些常见的问题与解决代码!(精典) 3
- 一些常见的问题与解决代码!(五)(JS)
- SQL SERVER中一些常见性能问题的总结(转载)