MFC 中 CString转换成char[]数组

环境为vs2010

CString szText;
char a[1024];
edit1.GetWindowText(szText);//获取edit1编辑框的文本

怎么将CString类 szText 转换为char[]数组的内容?

memcpy(a,szText,1024);只能读取文本的第一个字符

MFC不建议用char类型了,你用TCHAR,宽字符的处理速度还快些

memcpy(a,(const char*)szText);

memcpy(a,szText.GetBuffer());

strncpy(a, szText.GetBuffer(), sizeof(a));

总之,要用CString::GetBuffer()取(内部的)字符串(sz)首址才可以。
——(const char*)szText会自动展开成szText.GetBuffer()调用;

BTW,既然用CString类型,则szText命名不妥,不如csText,而不妨将a数组命名为szA
:-)

你这边的CString里存放的事实上是Unicode字符串,如果其中存放是英文字母。
由于Unicode一个字符占两位,高字节是0,用memcpy复制到char型字符串就会被当做'\0'于是字符串就被截断了,输出的只是第一位。
要实现你说的,可以用WideCharToMultiByte函数,具体可以参考:
http://www.cnblogs.com/gakusei/articles/1585211.html

CString m_strIPAddress;
const char*ch_ipaddress={0};
ch_ipaddress = (char *)m_strIPAddress.GetBuffer();

CString的GetBuffer()函数返回的就是char*