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

分享

CString,string,char*之間的轉(zhuǎn)換(轉(zhuǎn))

 禁忌石 2017-04-04

CString,string,char*之間的轉(zhuǎn)換(轉(zhuǎn))

這三種類型各有各的優(yōu)點(diǎn),比如CString比較靈活,,是基于MFC常用的類型,,安全性也最高,但可移植性最差,。string是使用STL時(shí)必不可少的類型,,所以是做工程時(shí)必須熟練掌握的;char*是從學(xué)習(xí)C語言開始就已經(jīng)和我們形影不離的了,,有許多API都是以char*作為參數(shù)輸入的,。所以熟練掌握三者之間的轉(zhuǎn)換十分必要。

以下我用簡(jiǎn)單的圖示指出三者之間的關(guān)系,,并以標(biāo)號(hào)對(duì)應(yīng)轉(zhuǎn)換的方法,。

1 string to CString   

  CString.format("%s",string.c_str()); 

2 CString to string

string str(CString.GetBuffer(str.GetLength()));

3 string to char *

char *p=string.c_str();

4 char * to string

string str(char*);

5 CString to char *

strcpy(char,CString,sizeof(char));

6 char * to CString

CString.format("%s",char*);

 CString的format方法是非常好用的。string的c_str()也是非常常用的,,但要注意和char *轉(zhuǎn)換時(shí),,要把char定義成為const char*,這樣是最安全的,。
 
以上函數(shù)UNICODE編碼也沒問題:unicode下照用,,加個(gè)_T()宏就行了,像這樣子_T("%s")
 
 
補(bǔ)充:
CString 可能是 CStringW/CStringA,在與 string 轉(zhuǎn)換時(shí),,如果是 CStringW,,還涉及編碼轉(zhuǎn)換問題,。下面以 CStringA 來說明。
 
1 string to CString  

CString.format("%s",string.c_str());
 
CStringA = string.c_str() 就可以了

 
2 CString to string

string str(CString.GetBuffer(str.GetLength()));
 
GetBuffer 有參數(shù)的話,,可能導(dǎo)致內(nèi)部的分配空間動(dòng)作,,要進(jìn)行后續(xù) ReleaseBuffer 操作。

string = CStringA

string = CStringA.GetBuffer();

3 string to char *

char *p=string.c_str();

4 char * to string

string str(char*);

5 CString to char *

strcpy(char *,CString,sizeof(char));

按照 3 風(fēng)格,,這里應(yīng)該 char *  = CStringA; 或者 char *p = CStringA.GetBuffer();
 
6 char * to CString

CStringA = char * 就可以了

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,謹(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)論公約

    類似文章 更多