CString与char*转换(Unicode和多字节字符集)
2015-08-29 10:20
453 查看
一、使用多字节字符集
1.CString转char*
(1)传给未分配内存的const char* (LPCTSTR)指针.
(2)传给未分配内存的指针.
(3)把CString 值赋给已分配内存的char *。
(4)把CString 值赋给已分配内存char[]数组.
2.char*转CString
二、使用Unicode字符集
1.CString转char*
2.char*转CString
同多字节字符集。
1.CString转char*
(1)传给未分配内存的const char* (LPCTSTR)指针.
CString cstr="ABC"; const char* ch = (LPCTSTR)cstr; //ch指向的地址和cstr相同。但由于使用const保证ch不会修改,所以安全.
(2)传给未分配内存的指针.
CString cstr = "ABC"; char *ch = cstr.GetBuffer(cstr1.GetLength() + 1); cstr.ReleaseBuffer(); //修改ch指向的值等于修改cstr里面的值. //PS:用完ch后,不用delete ch,因为这样会破坏cstr内部空间,容易造成程序崩溃.
(3)把CString 值赋给已分配内存的char *。
CString cstr = "ABC"; int strLength = cstr.GetLength() + 1; char *pValue = new char[strLength]; strncpy(pValue, cstr, strLength);
(4)把CString 值赋给已分配内存char[]数组.
CString cstr= "ABC"; strncpy(chArray, cstr, strLength1); int strLength1 = cstr1.GetLength() + 1; char chArray[100]; memset(chArray,0, sizeof(bool) * 100); //将数组的垃圾内容清空.
2.char*转CString
(1)char *p = "abc"; CString str(p); (2)CString str; char * p="abc"; str.Format("%s",p); (3)CString str; char * p="abc"; p=str;
二、使用Unicode字符集
1.CString转char*
(1)CString str =_T("123"); int len =WideCharToMultiByte(CP_ACP,0,str,str.GetLength(),NULL,0,NULL,NULL); char *p =new char[len+1]; WideCharToMultiByte(CP_ACP,0,str,str.GetLength(),p,len,NULL,NULL ); p[len] = '\0'; delete []p; (2)用T2A、W2A函数(还可以实现wchar_t* char*转换) CString p= L"123"; USES_CONVERSION; char* s = T2A(p); wchar_t* q=A2T(s); MessageBoxW(q); //char* w = W2A(p);
2.char*转CString
同多字节字符集。
相关文章推荐
- HLG 哈理工 1053 Warcraft III (完全背包)
- 软件项目经理所必需具备的素质(收藏别人的)
- 设计模式(一):单例模式
- linux命令(2):gzip命令
- hdu 5402 Travelling Salesman Problem
- [C#]增强响应性,用加载窗体(Splash)来载入主窗体
- 日经社説 20150829 課題残る新競技場の整備計画
- 一些前台密码验证JS
- win7下安装sourcetree
- <!--[if IE 9]>....<!end if-->
- Python -定义函数
- linux命令(1):wget命令
- 如何构建自己的.jar文件
- iOS学习之CoreData模糊查找,分页查找,多模型文件处理
- LeetCode2.2.9(Reverse Nodes in k-Group)
- 日经春秋 20150829
- UDP广播程序的实现
- POJ 2184 Cow Exhibition
- 网络编程之套接字(tcp)
- Leetcode全排列问题Java版