c++-MFC 中 CString转换成char[]数组

问题描述

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型字符串就会被当做''于是字符串就被截断了,输出的只是第一位。
要实现你说的,可以用WideCharToMultiByte函数,具体可以参考:
http://www.cnblogs.com/gakusei/articles/1585211.html

时间: 2024-11-26 20:15:27

c++-MFC 中 CString转换成char[]数组的相关文章

php中字符串转换成数组函数explode(),implode()

行看看这两个函数 implode 函数: 使用函数 implode 将数组转换为字符串 explode 函数: 使用函数 explode 将字符串转换成数组 例1. 今天在php论坛中看到以为朋友发了一个帖子请教php如何把字符串转换成数组;作为php程序员的新一第一反应是联想到explode(),implode()这两个函数.新一也是用里面的函数进行转换成数组的. con[1]=28&selt[1]=1&con[2]=29&selt[2]=4&con[3]=26&

string-java中object转换成String类型问题

问题描述 java中object转换成String类型问题 class a122{ public static void main(String[] args){ Object d=4; String g=(String)d; } } 为什么运行时这个小程序会出错,按说object不是可以转化成String的吗 解决方案 你这种理解是错误的,因为你定义的Object类是Integer 类型,跟String类型没有关系,不能转换. 虽然可以编译通过,但是会报运行时异常java.lang.Integ

请问C++中用string输入的字符串,如何转换成char[100]的字符串呢?

问题描述 请问C++中用string输入的字符串,如何转换成char[100]的字符串呢? 请问C++中用string输入的字符串,如何转换成char[100]的字符串呢? 解决方案 http://www.aichengxu.com/view/48568 解决方案二: stl 中的string,提供了c_str的方法 函数原型如下 const char* c_str() const 所以你只能得到const char *类型,结尾,但是你非要变成char[100]的类型,你自己去memcpy吧,

如何读取Excel文件并转换成二进制数组?

问题描述 pb中可以把Excel文件转换成二进制数组进行读取,我要用C#调用pb的webservice将Excel数据导入到数据库中.

如何将VB.NET 字符串转换成字节数组

问题描述 e.gDimsAsString="123456"要转换成DimbAsByte()=&H12,msg(1)=&H34,msg(2)=&H56可以怎样做?String長度不是固定的,谢谢DimsAsString="123456"DimbAsByte()=Encoding.ASCII.GetBytes(s)這方法出来的是msg(0)=49,msg(1)=50.........是不行的 解决方案 解决方案二:SubString2位一个长度然

android中String转换成16进制的方法

问题描述 android中String转换成16进制的方法 想请教一下?把一个24个字节的字符串转换成16进制,并把结果打印出来要怎么写,网上有一些方法但是没有说转换完的16进制串打印出来要用哪个参数?求指点 解决方案 byte[] b = ""字符串"".getBytes();foreach (byte i : b){if (i < 16) System.out.print(""0"" + Integer.toHexS

怎么将Word中文字转换成表格?

  在使用office软件时,常常会在Word中加入表格,这时候我们一般想到的是,建立表格,然后一格一格的填写;或者用Excel表格制作在复制到Word文档中.其实在Word中就可以将文本文档转换成电子表格,此文将告诉你文本文档如何轻松转换成电子表格. Word文档中,用户可以很容易地将文字转换成表格.其中关键的操作是使用分隔符号将文本合理分隔.Word能够识别常见的分隔符,例如段落标记(用于创建表格行).制表符和逗号(用于创建表格列). 一.将Word中文字转换成表格(以Word2003为例)

MFC中cstring放入结构体的释放

问题描述 MFC中cstring放入结构体的释放 用delete释放结构体的话,cstring会被释放么?如果不会,能用free去释放cstring么? 解决方案 如果你的cstring是指针,那么还是需要手工delete的,否则不可能自动释放. 解决方案二: 如果是cstring对象 那么delete的时候cstring会自动释放 解决方案三: CString内部有管理内存的机制.不管传什么怎么用都不用外面再另外手动释放.除非你用的是 CString* str = new CString; 那

string-Android中Editable转换成字符

问题描述 Android中Editable转换成字符 比如说,获取EditText的内容 EditText et_content = (EditText)findViewById(R.id.content); String content = et_content.getText().toString(); 我查看到getText()返回的是Editable,为什么Editable可以通过toStirng()转换成String类型? 解决方案 EditText 中getText @Overrid