博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MFC中Cstring与char *的转换
阅读量:4135 次
发布时间:2019-05-25

本文共 1322 字,大约阅读时间需要 4 分钟。

一个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);

 

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));

附:Cstring的相关成员函数:

微软对这方面的总结:http://msdn.microsoft.com/zh-cn/library/vstudio/ms235631.aspx

转载地址:http://gcsvi.baihongyu.com/

你可能感兴趣的文章
JavaScript substring() 方法
查看>>
HTML 5 新的表单元素 datalist keygen output
查看>>
(转载)正确理解cookie和session机制原理
查看>>
jQuery ajax - ajax() 方法
查看>>
将有序数组转换为平衡二叉搜索树
查看>>
最长递增子序列
查看>>
从一列数中筛除尽可能少的数,使得从左往右看这些数是从小到大再从大到小...
查看>>
判断一个整数是否是回文数
查看>>
经典shell面试题整理
查看>>
腾讯的一道面试题—不用除法求数字乘积
查看>>
素数算法
查看>>
java多线程环境单例模式实现详解
查看>>
将一个数插入到有序的数列中,插入后的数列仍然有序
查看>>
在有序的数列中查找某数,若该数在此数列中,则输出它所在的位置,否则输出no found
查看>>
万年历
查看>>
作为码农你希望面试官当场指出你错误么?有面试官这样遭到投诉!
查看>>
好多程序员都认为写ppt是很虚的技能,可事实真的是这样么?
查看>>
如果按照代码行数发薪水会怎样?码农:我能刷到公司破产!
查看>>
程序员失误造成服务停用3小时,只得到半月辞退补偿,发帖喊冤
查看>>
码农:很多人称我“技术”,感觉这是不尊重!纠正无果后果断辞职
查看>>