开发者社区> 问答> 正文

MFC 中 CString转换成char[]数组

环境为vs2010
CString szText;
char a[1024];
edit1.GetWindowText(szText);//获取edit1编辑框的文本
怎么将CString类 szText 转换为char[]数组的内容?
memcpy(a,szText,1024);只能读取文本的第一个字符

展开
收起
a123456678 2016-03-04 18:10:31 4853 0
1 条回答
写回答
取消 提交回答
  • 你使用的CString里存放的事实上是Unicode字符串,如果其中存放是英文字母。
    由于Unicode一个字符占两位,高字节是0,用memcpy复制到char型字符串就会被当做'0'于是字符串就被截断了,输出的只是第一位。
    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这样便可以,你可以试一试

    2019-07-17 18:52:42
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载