问题描述
- MFC 中 CString转换成char[]数组
-
环境为vs2010CString 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型字符串就会被当做''于是字符串就被截断了,输出的只是第一位。
要实现你说的,可以用WideCharToMultiByte函数,具体可以参考:
http://www.cnblogs.com/gakusei/articles/1585211.html
时间: 2024-11-26 20:15:27