久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

CString轉(zhuǎn)char

 冉亮 2010-10-25

1.傳給未分配內(nèi)存的const char* (LPCTSTR)指針.
   CString cstr(asdd);
   const char* ch = (LPCTSTR)cstr;
   ch指向的地址和cstr相同,。但由于使用const保證ch不會(huì)修改,,所以安全.

2.傳給未分配內(nèi)存的指針.
    CString cstr = "ASDDSD";
    char *ch = cstr.GetBuffer(cstr1.GetLength() + 1);
    cstr.ReleaseBuffer();
    //修改ch指向的值等于修改cstr里面的值.
    //PS:用完ch后,不用delete ch,因?yàn)檫@樣會(huì)破壞cstr內(nèi)部空間,容易造成程序崩潰.

3.第二種用法,。把CString 值賦給已分配內(nèi)存的char *,。
    CString cstr1 = "ASDDSD";
    int strLength = cstr1.GetLength() + 1;
    char *pValue = new char[strLength];
    strncpy(pValue, cstr1, strLength);

4.第三種用法.把CString 值賦給已分配內(nèi)存char[]數(shù)組.
    CString cstr2 = "ASDDSD";
    int strLength1 = cstr1.GetLength() + 1;
    char chArray[100];
    memset(chArray,0, sizeof(bool) * 100); //將數(shù)組的垃圾內(nèi)容清空.
    strncpy(chArray, cstr1, strLength1);
 
 

CString中有個(gè)LPCTSTR類(lèi)型轉(zhuǎn)換運(yùn)算符,。所以我做以下運(yùn)算:
_itoa(m_num3,(char *)((LPCTSTR)str),10),。不幸的是,,當(dāng)str的大小變化時(shí),,debug報(bào)錯(cuò)。

錯(cuò)誤的原因在于,,當(dāng)寫(xiě)入str的字符數(shù)發(fā)生變化時(shí),,會(huì)重新分配str所占空間,這時(shí)CString類(lèi)內(nèi)部的字符指針就無(wú)效了,,故報(bào)錯(cuò),。但這在Release版本下不會(huì)出現(xiàn)問(wèn)題,。原來(lái)對(duì)CString類(lèi)已經(jīng)進(jìn)行了優(yōu)化。當(dāng)需要分配的內(nèi)存
小于64字節(jié)時(shí),直接分配64字節(jié)的內(nèi)存,。

解決的方法是使用LPTSTR CString::GetBuffer(intnMinBufLength),。該函數(shù)是先將字符寫(xiě)入一個(gè)指定大小緩沖區(qū),并返回緩沖區(qū)地址作為字符指針,。而如果要用返回的地址指向的字符串去改變?cè)瓉?lái)的字符串,,就需在使用一切CString方法前調(diào)用ReleaseBuffer(),這樣新開(kāi)辟的緩沖區(qū)就成為當(dāng)前CString對(duì)象的合法字符緩沖區(qū),,因?yàn)槿魏蔚腃String方法的調(diào)用都可能引起緩沖區(qū)地址改變,。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多