您的位置:首页 > 其它

MFC中Cstring与char *的转换

2015-09-10 17:26 288 查看
一个CString 的变量 cstr

一个char *的变量 ch

怎样实现 cstr转成ch?

1.传给未分配内存的const char* (LPCTSTR)指针.

CString cstr(asdd);

const char* ch = (LPCTSTR)cstr;

ch指向的地址和cstr相同。但由于使用const保证ch不会修改,所以安全.

2.传给未分配内存的指针.

CString cstr = "ASDDSD";

char *ch = cstr.GetBuffer(cstr.GetLength() + 1);

cstr.ReleaseBuffer();

//修改ch指向的值等于修改cstr里面的值.

//PS:用完ch后,不用delete ch,因为这样会破坏cstr内部空间,容易造成程序崩溃.

3.第二种用法。把CString 值赋给已分配内存的char *。

CString cstr1 = "ASDDSD";

int strLength = cstr1.GetLength() + 1;

char *pValue = new char[strLength];

strncpy(pValue, cstr1, strLength);

4.第三种用法.把CString 值赋给已分配内存char[]数组.

CString cstr2 = "ASDDSD";

int strLength2 = cstr2.GetLength() + 1;

char chArray[100];

memset(chArray,0, sizeof(bool) * 100); //将数组的垃圾内容清空.

strncpy(chArray, cstr2, strLength2);

<span style="font-family: 'Microsoft YaHei'; font-size: 18px;">1、string 转 CString
CString.format("%s", string.c_str());
2、char * 转 CString
CString.format("%s", char*);
3、char * 转 string
string s(char *);
4、string 转 char *
char *p = string.c_str();
5、CString 转 string
string s(CString.GetBuffer(CString.GetLength()));
6、CString 转 char *
charpoint=strtest.GetBuffer(strtest.GetLength());
不建议用(LPCTSTR)进行强制类型转化,这样strtest大小发生变化时会出现错误。
7、CString 转 char[100]
char a[100];
CString str("aaaaaa");
strncpy(a,(LPCTSTR)str,sizeof(a));</span>
<span style="font-family: 'Microsoft YaHei'; font-size: 18px;">转自:http://blog.csdn.net/sszgg2006/article/details/8667945</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: