MFC中如何把CString与char数组互换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC中如何把CString与char数组互换相关的知识,希望对你有一定的参考价值。

参考技术A CString str=_T("你好");
char ch[4];
for(int i=0;i<str.GetLength();i++)

ch[i]=str.GetAt(i);
参考技术B 给你看一小段例子:

char buff[128]="hello";
CString str;

str=buff; //因为CString 的 = 被重载,可以直接赋值
strcpy(buff,str.GetBuffer(128)); //GetBuffer可以拿到CString中字符串所存储的地址。

你再体会一下,应该就简单了。
参考技术C for(int i=0; i<strlen(ex); i++) //ex是CString类型的1.\计算器wqyDlg.cpp(233) : error C2664: “strlen”: 不能将参数 1 从“CString”转换为“const char *”------解决方案--------------------------------------------------------CString splitNum(_T(0));即可for(int i=0; i<ex.GetLength(); i++)------解决方案--------------------------------------------------------看看这个CString类里面的函数------解决方案--------------------------------------------------------CString是一个兼容版的,根据你的项目设置,会自动变为ANSI,或是Unicode版。所以,最好用TCHAR *来获得CString的字符串数据指针。上面你的代码,可以改成CString splitNum = TEXT(0);和for(int i=0; i<ex.GetLength(); i++)。如果非要获得它的字符数据指针,可以利用它的LPCTSTR操作符:TCHAR * pstr = (LPCTSTR)ex;当然了,求长度也不能用strlen了,要用兼容版_tcslen(),或是用lstrlen()。再说一句,C串不显式包含长度信息,它的结束是遇到NUL符(\0)才结束,所以C串的求长度函数内部都是循环到NUL符计数。for(int i=0; i<strlen(s); i++)你这种写法,复杂度太恐怖了。。------解决方案--------------------------------------------------------本回答被提问者采纳

关于MFC程序中CString转char*与char*转CString的几个问题

一、CString转char*

char* Tool::CString2Char(CString msg)

	int len = WideCharToMultiByte(CP_ACP, 0, msg, -1, NULL, 0, NULL, NULL);
	char *buf = new char[len + 1];
	WideCharToMultiByte(CP_ACP, 0, msg, -1, buf, len, NULL, NULL);
	return buf;

二、char*转CString

char* a = “aaa”
CString str2(a);


以上是关于MFC中如何把CString与char数组互换的主要内容,如果未能解决你的问题,请参考以下文章

关于MFC程序中CString转char*与char*转CString的几个问题

MFC中的CString转char*

MFC 中char转CString问题

mfc CFile 读取内容到char数组的问题?

将 CString 转换为字符数组?

CString与string的区别