锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品亚洲综合久久,欧美日韩精品免费观看,久久精品99http://m.shnenglu.com/yunboy4/archive/2009/07/31/91800.htmlyunboyyunboyFri, 31 Jul 2009 05:46:00 GMThttp://m.shnenglu.com/yunboy4/archive/2009/07/31/91800.htmlhttp://m.shnenglu.com/yunboy4/comments/91800.htmlhttp://m.shnenglu.com/yunboy4/archive/2009/07/31/91800.html#Feedback0http://m.shnenglu.com/yunboy4/comments/commentRss/91800.htmlhttp://m.shnenglu.com/yunboy4/services/trackbacks/91800.htmlCString璇︾粏璁茶В
 鍓嶈█錛氫覆鎿嶄綔鏄紪紼嬩腑鏈甯哥敤涔熸渶鍩烘湰鐨勬搷浣滀箣涓銆?鍋氫負VC紼嬪簭鍛橈紝鏃犺鏄彍楦熸垨楂樻墜閮芥浘鐢ㄨ繃Cstring銆傝屼笖濂藉儚瀹為檯緙栫▼涓緢闅劇寰楀紑瀹冿紙铏界劧瀹冧笉鏄爣鍑嗭跡++涓殑搴擄級銆傚洜涓篗FC涓彁渚涚殑榪欎釜綾誨鎴戜滑鎿嶄綔瀛椾覆瀹炲湪澶柟渚夸簡錛孋String涓嶄粎鎻愪緵鍚勭涓板瘜鐨勬搷浣滃嚱鏁般佹搷浣滅閲嶈澆錛屼嬌鎴戜滑浣跨敤璧蜂覆璧鋒潵鏇磋薄basic涓偅鏍風(fēng)洿瑙傦紱鑰屼笖瀹冭繕鎻愪緵浜嗗姩鎬佸唴瀛樺垎閰嶏紝浣挎垜浠噺灝戜簡澶氬皯瀛楃涓叉暟緇勮秺鐣岀殑闅愭?zhèn)c備絾鏄紝鎴戜滑鍦ㄤ嬌鐢ㄨ繃紼嬩腑涔熶綋浼氬埌CString綆鐩村お瀹規(guī)槗鍑洪敊浜嗭紝鑰屼笖鏈夌殑涓嶅彲鎹夋懜銆傛墍浠ユ湁璁稿楂樹漢绔欒繃鏉ワ紝寤鴻鎶涘純瀹冦?

鍦ㄦ錛屾垜涓漢璁や負錛欳String灝佽寰楃‘瀹炲緢瀹岀編錛屽畠鏈夎澶氫紭鐐癸紝濡?#8220;瀹規(guī)槗浣跨敤 錛屽姛鑳藉己錛屽姩鎬佸垎閰嶅唴瀛橈紝澶ч噺榪涜鎷瘋礉鏃跺畠寰堣兘鑺傜渷鍐呭瓨璧勬簮騫朵笖鎵ц鏁堢巼楂橈紝涓庢爣鍑嗭跡瀹屽叏鍏煎錛屽悓鏃舵敮鎸佸瀛楄妭涓庡瀛楄妭錛岀敱浜庢湁寮傚父鏈哄埗鎵浠ヤ嬌鐢ㄥ畠瀹夊叏鏂逛究” 鍏跺疄錛屼嬌鐢ㄨ繃紼嬩腑涔嬫墍浠ュ鏄撳嚭閿欙紝閭f槸鍥犱負鎴戜滑瀵瑰畠浜嗚В寰楄繕涓嶅錛岀壒鍒槸瀹冪殑瀹炵幇鏈哄埗銆傚洜涓烘垜浠腑鐨勫ぇ澶氭暟浜猴紝鍦ㄥ伐浣滀腑騫朵笉閭d箞鐖辨繁鍏ュ湴鍘葷湅鍏充簬瀹冪殑鏂囨。錛屼綍鍐靛畠榪樻槸鑻辨枃鐨勩?

鐢變簬鍓嶅嚑澶╂垜鍦ㄥ伐浣滀腑閬囧埌浜嗕竴涓湰涓嶆槸闂浣嗗嵈鐗瑰埆媯樻墜銆佺壒鍒毦瑙e喅鑰屼笖鑾悕鎯婅鐨勯棶棰樸傚ソ鏉ユ渶鍚庡彂鐜版槸鐢變簬CString寮曞彂鐨勩傛墍浠ユ病鍔炴硶錛屾垜鎶婃暣涓狢String鐨勫疄鐜板叏閮ㄧ湅浜嗕竴閬嶏紝鎵嶆厡鐒跺ぇ鎮(zhèn)燂紝騫跺交搴曞紕娓呬簡闂鐨勫師鍥?榪欎釜闂錛屾垜宸插湪csdn涓婂紑璐?銆傚湪姝わ紝鎴戞兂鎶婃垜鐨勪竴浜涘叧浜嶤String鐨勭煡璇嗘葷粨涓鐣紝浠ヤ緵浠栵紙濂癸級浜哄熼壌錛屼篃璁稿叾涓湁鎴戠悊瑙d笂鐨勯敊璇紝鏈涘彂鐜拌呰兘閫氱煡鎴戯紝涓嶈儨鎰熻阿銆?/p>


1錛?CString瀹炵幇鐨勬満鍒?

CString鏄氳繃“寮曠敤”鏉ョ鐞嗕覆鐨勶紝“寮曠敤”榪欎釜璇嶆垜鐩鎬俊澶у騫朵笉闄岀敓錛岃薄Window鍐呮牳瀵硅薄銆丆OM瀵硅薄絳夐兘鏄氳繃寮曠敤鏉ュ疄鐜扮殑銆傝孋String涔熸槸閫氳繃榪欐牱鐨勬満鍒舵潵綆$悊鍒嗛厤鐨勫唴瀛樺潡銆傚疄闄呬笂CString瀵硅薄鍙湁涓涓寚閽堟垚鍛樺彉閲?鎵浠ヤ換浣旵String瀹炰緥鐨勯暱搴﹀彧鏈?瀛楄妭.

鍗? int len = sizeof(CString);//len絳変簬4

榪欎釜鎸囬拡鎸囧悜涓涓浉鍏崇殑寮曠敤鍐呭瓨鍧楋紝濡傚浘: CString str("abcd");

 

 


‘A’

‘B’

‘C’

‘D’

0

 

 

0x04040404 head閮紝涓哄紩鐢ㄥ唴瀛樺潡鐩稿叧淇℃伅


str 0x40404040

 

 


姝e洜涓哄姝わ紝涓涓繖鏍風(fēng)殑鍐呭瓨鍧楀彲琚涓狢String鎵寮曠敤錛屼緥濡備笅鍒椾唬鐮侊細

CString str("abcd");

CString a = str;

CString b(str);

CString c;

c = b;

涓婇潰浠g爜鐨勭粨鏋滄槸錛氫笂闈㈠洓涓璞?str,a,b,c)涓殑鎴愬憳鍙橀噺鎸囬拡鏈夌浉鍚岀殑鍊鹼紝閮戒負0x40404040.鑰岃繖鍧楀唴瀛樺潡鎬庝箞鐭ラ亾鏈夊灝戜釜CString寮曠敤瀹冨憿錛熷悓鏍鳳紝瀹冧篃浼氳褰曚竴浜涗俊鎭傚琚紩鐢ㄦ暟錛屼覆闀垮害錛屽垎閰嶅唴瀛橀暱搴︺?/p>

榪欏潡寮曠敤鍐呭瓨鍧楃殑緇撴瀯瀹氫箟濡備笅錛?/p>

struct CStringData

{

long nRefs; //琛ㄧず鏈夊灝戜釜CString 寮曠敤瀹? 4

int nDataLength; //涓插疄闄呴暱搴? 4

int nAllocLength; //鎬誨叡鍒嗛厤鐨勫唴瀛橀暱搴︼紙涓嶈榪欏ご閮ㄧ殑12瀛楄妭錛? 4

};

鐢變簬鏈変簡榪欎簺淇℃伅錛孋String灝辮兘姝g‘鍦板垎閰嶃佺鐞嗐侀噴鏀懼紩鐢ㄥ唴瀛樺潡銆?/p>

濡傛灉浣犳兂鍦ㄨ皟璇曠▼搴忕殑鏃跺欒幏寰楄繖浜涗俊鎭傚彲浠ュ湪Watch紿楀彛閿叆涓嬪垪琛ㄨ揪寮忥細

(CStringData*)((CStringData*)(this->m_pchData)-1)鎴?/p>

(CStringData*)((CStringData*)(str.m_pchData)-1)//str涓烘寚CString瀹炰緥


姝e洜涓洪噰鐢ㄤ簡榪欐牱鐨勫ソ鏈哄埗錛屼嬌寰桟String鍦ㄥぇ閲忔嫹璐濇椂錛屼笉浠呮晥鐜囬珮錛岃屼笖鍒嗛厤鍐呭瓨灝戙?/p>

 

2錛嶭PCTSTR 涓?GetBuffer(int nMinBufLength)

榪欎袱涓嚱鏁版彁渚涗簡涓庢爣鍑咰鐨勫吋瀹硅漿鎹€傚湪瀹為檯涓嬌鐢ㄩ鐜囧緢楂橈紝浣嗗嵈鏄渶瀹規(guī)槗鍑洪敊鐨勫湴鏂廣傝繖涓や釜鍑芥暟瀹為檯涓婅繑鍥炵殑閮芥槸鎸囬拡錛屼絾瀹冧滑鏈変綍鍖哄埆鍛紵浠ュ強璋冪敤瀹冧滑鍚庯紝騫曞悗鏄仛浜嗘庢牱鐨勫鐞嗚繃紼嬪憿錛?/p>

(1) LPCTSTR 瀹冪殑鎵ц榪囩▼鍏跺疄寰堢畝鍗曪紝鍙槸榪斿洖寮曠敤鍐呭瓨鍧楃殑涓插湴鍧銆?瀹冩槸浣滀負鎿嶄綔絎﹂噸杞芥彁渚涚殑錛屾墍浠ュ湪浠g爜涓湁鏃跺彲浠ラ殣寮忚漿鎹紝鑰屾湁鏃跺嵈闇寮哄埗杞埗銆傚錛?/p>

CString str;

const char* p = (LPCTSTR)str;

//鍋囪鏈夎繖鏍風(fēng)殑涓涓嚱鏁幫紝Test(const char* p)錛?浣犲氨鍙互榪欐牱璋冪敤

Test(str);//榪欓噷浼氶殣寮忚漿鎹負LPCTSTR

(2) GetBuffer(int nMinBufLength) 瀹冪被浼鹼紝涔熶細榪斿洖涓涓寚閽堬紝涓嶈繃瀹冩湁鐐瑰樊鍒?榪斿洖鐨勬槸LPTSTR

(3) 榪欎袱鑰呭埌搴曟湁浣曚笉鍚屽憿錛熸垜鎯沖憡璇夊ぇ瀹訛紝鍏舵湰璐ㄤ笂瀹屽叏涓嶄竴鏍鳳紝涓鑸LPCTSTR杞崲鍚庡彧搴旇褰撳父閲忎嬌鐢紝鎴栬呭仛鍑芥暟鐨勫叆鍙傦紱鑰孏etBuffer(...)鍙栧嚭鎸囬拡鍚庯紝鍙互閫氳繃榪欎釜鎸囬拡鏉ヤ慨鏀歸噷闈㈢殑鍐呭錛屾垨鑰呭仛鍑芥暟鐨勫嚭鍙傘備負浠涔堝憿錛熶篃璁哥粡甯告湁榪欐牱鐨勪唬鐮侊細

CString str("abcd");

char* p = (char*)(const char*)str;

p[2] = 'z';

鍏跺疄錛屼篃璁告湁榪欐牱鐨勪唬鐮佸悗錛屼綘鐨勭▼搴忓茍娌℃湁閿欙紝鑰屼笖紼嬪簭涔熻繍琛屽緱鎸哄ソ銆備絾瀹冨嵈鏄潪甯稿嵄闄╃殑銆傚啀鐪?/p>

CString str("abcd");

CString test = str;

....

char* p = (char*)(const char*)str;

p[2] = 'z';

strcpy(p, "akfjaksjfakfakfakj");//榪欎笅瀹岃泲浜?

浣犵煡閬撴鏃訛紝test涓殑鍊兼槸澶氬皯鍚楋紵絳旀鏄?abzd"銆傚畠涔熻窡鐫鏀瑰彉浜嗭紝榪欎笉鏄綘鎵鏈熸湜鍙戠敓鐨勩備絾涓轟粈涔堜細榪欐牱鍛紵浣犵◢寰兂鎯沖氨浼氭槑鐧斤紝鍓嶉潰璇磋繃錛屽洜涓篊String鏄寚鍚戝紩鐢ㄥ潡鐨勶紝str涓巘est鎸囧悜鍚屼竴鍧楀湴鏂?褰撲綘p[2]='z'鍚庯紝褰撶劧test涔熶細闅忕潃鏀瑰彉銆傛墍浠ョ敤瀹冨仛LPCTSTR鍋氳漿鎹㈠悗錛屼綘鍙兘鍘昏榪欏潡鏁版嵁錛屽崈涓囧埆鍘繪敼鍙樺畠鐨勫唴瀹廣?/p>


鍋囧鎴戞兂鐩存帴閫氳繃鎸囬拡鍘諱慨鏀規(guī)暟鎹殑璇濓紝閭f庢牱鍔炲憿錛熷氨鏄敤GetBuffer(...).鐪嬩笅榪頒唬鐮侊細

CString str("abcd");

CString test = str;

....

char* p = str.GetBuffer(20);

p[2] = 'z'; // 鎵ц鍒版錛岀幇鍦╰est涓煎嵈浠嶆槸"abcd"

strcpy(p, "akfjaksjfakfakfakj"); // 鎵ц鍒版錛岀幇鍦╰est涓艱繕鏄?abcd"

涓轟粈涔堜細榪欐牱錛熷叾瀹濭etBuffer(20)璋冪敤鏃訛紝瀹冨疄闄呬笂鍙﹀寤虹珛浜嗕竴鍧楁柊鍐呭潡瀛橈紝騫跺垎閰?0瀛楄妭闀垮害鐨刡uffer錛岃屽師鏉ョ殑鍐呭瓨鍧楀紩鐢ㄨ鏁頒篃鐩稿簲鍑?. 鎵浠ユ墽琛屼唬鐮佸悗str涓巘est鏄寚鍚戜簡涓ゅ潡涓嶅悓鐨勫湴鏂癸紝鎵浠ョ浉瀹夋棤浜嬨?/p>

(4) 涓嶈繃榪欓噷榪樻湁涓鐐規(guī)敞鎰忎簨欏癸細灝辨槸str.GetBuffer(20)鍚庯紝str鐨勫垎閰嶉暱搴︿負20錛屽嵆鎸囬拡p瀹冩墍鎸囧悜鐨刡uffer鍙湁20瀛楄妭闀匡紝緇欏畠璧嬪兼椂錛屽垏涓嶅彲瓚呰繃錛屽惁鍒欑伨闅劇浣犱笉榪滀簡錛涘鏋滄寚瀹氶暱搴﹀皬浜庡師鏉ヤ覆闀垮害錛屽GetBuffer(1),瀹為檯涓婂畠浼氬垎閰?涓瓧鑺傞暱搴︼紙鍗沖師鏉ヤ覆闀垮害錛夛紱鍙﹀錛屽綋璋冪敤GetBuffer(...)鍚庡茍鏀瑰彉鍏跺唴瀹癸紝涓瀹氳璁板緱璋冪敤ReleaseBuffer(),榪欎釜鍑芥暟浼氭牴鎹覆鍐呭鏉ユ洿鏂板紩鐢ㄥ唴瀛樺潡鐨勫ご閮ㄤ俊鎭?/p>

(5) 鏈鍚庤繕鏈変竴娉ㄦ剰浜嬮」錛岀湅涓嬭堪浠g爜錛?/p>

char* p = NULL;

const char* q = NULL;

{

CString str = "abcd";

q = (LPCTSTR)str;

p = str.GetBuffer(20);

AfxMessageBox(q);// 鍚堟硶鐨?/p>

strcpy(p, "this is test");//鍚堟硶鐨勶紝

}

AfxMessageBox(q);// 闈炴硶鐨勶紝鍙兘瀹岃泲

strcpy(p, "this is test");//闈炴硶鐨勶紝鍙兘瀹岃泲

榪欓噷瑕佽鐨勫氨鏄紝褰撹繑鍥炶繖浜涙寚閽堝悗錛?濡傛灉CString瀵硅薄鐢熷懡緇撴潫錛岃繖浜涙寚閽堜篃鐩稿簲鏃犳晥銆?/p>


3錛庢嫹璐?& 璧嬪?& "寮曠敤鍐呭瓨鍧? 浠涔堟椂鍊欓噴鏀撅紵


涓嬮潰婕旂ず涓孌典唬鐮佹墽琛岃繃紼?/p>

void Test()

{

CString str("abcd");

//str鎸囧悜涓寮曠敤鍐呭瓨鍧楋紙寮曠敤鍐呭瓨鍧楃殑寮曠敤璁℃暟涓?,闀垮害涓?,鍒嗛厤闀垮害涓?錛?/p>

CString a;

//a鎸囧悜涓鍒濆鏁版嵁鐘舵侊紝

a = str;

//a涓巗tr鎸囧悜鍚屼竴寮曠敤鍐呭瓨鍧楋紙寮曠敤鍐呭瓨鍧楃殑寮曠敤璁℃暟涓?,闀垮害涓?,鍒嗛厤闀垮害涓?錛?/p>

CString b(a);

//a銆乥涓巗tr鎸囧悜鍚屼竴寮曠敤鍐呭瓨鍧楋紙寮曠敤鍐呭瓨鍧楃殑寮曠敤璁℃暟涓?,闀垮害涓?,鍒嗛厤闀垮害涓?錛?/p>

{

LPCTSTR temp = (LPCTSTR)a;

//temp鎸囧悜寮曠敤鍐呭瓨鍧楃殑涓查鍦板潃銆傦紙寮曠敤鍐呭瓨鍧楃殑寮曠敤璁℃暟涓?,闀垮害涓?,鍒嗛厤闀垮害涓?錛?/p>

CString d = a;

//a銆乥銆乨涓巗tr鎸囧悜鍚屼竴寮曠敤鍐呭瓨鍧楋紙寮曠敤鍐呭瓨鍧楃殑寮曠敤璁℃暟涓?, 闀垮害涓?,鍒嗛厤闀垮害涓?錛?/p>

b = "testa";

//榪欐潯璇彞瀹為檯鏄皟鐢–String::operator=(CString&)鍑芥暟銆?b鎸囧悜涓鏂板垎閰嶇殑寮曠敤鍐呭瓨鍧椼傦紙鏂板垎閰嶇殑寮曠敤鍐呭瓨鍧楃殑 寮曠敤璁℃暟涓?, 闀垮害涓?, 鍒嗛厤闀垮害涓?錛?/p>

//鍚屾椂鍘熷紩鐢ㄥ唴瀛樺潡寮曠敤璁℃暟鍑?. a銆乨涓巗tr浠嶆寚鍚戝師 寮曠敤鍐呭瓨鍧楋紙寮曠敤鍐呭瓨鍧楃殑寮曠敤璁℃暟涓?,闀垮害涓?,鍒嗛厤闀垮害涓?錛?

}

//鐢變簬d鐢熷懡緇撴潫錛岃皟鐢ㄦ瀽鏋勫嚱鏁幫紝瀵艱嚦寮曠敤璁℃暟鍑?錛堝紩鐢ㄥ唴瀛樺潡鐨勫紩鐢ㄨ鏁頒負2,闀垮害涓?,鍒嗛厤闀垮害涓?錛?/p>

LPTSTR temp = a.GetBuffer(10);

//姝よ鍙ヤ篃浼氬鑷撮噸鏂板垎閰嶆柊鍐呭瓨鍧椼倀emp鎸囧悜鏂板垎閰嶅紩鐢ㄥ唴瀛樺潡鐨勪覆棣栧湴鍧錛堟柊 鍒嗛厤鐨勫紩鐢ㄥ唴瀛樺潡鐨勫紩鐢ㄨ鏁頒負1,闀垮害涓?,鍒嗛厤闀垮害涓?0錛?/p>

//鍚屾椂鍘熷紩鐢ㄥ唴瀛樺潡寮曠敤璁℃暟鍑?. 鍙湁str浠?鎸囧悜鍘熷紩鐢ㄥ唴瀛樺潡 錛堝紩鐢ㄥ唴瀛樺潡鐨勫紩鐢ㄨ鏁頒負1, 闀垮害涓?, 鍒嗛厤闀垮害涓?錛?

strcpy(temp, "temp");

//a鎸囧悜鐨勫紩鐢ㄥ唴瀛樺潡鐨勫紩鐢ㄨ鏁頒負1,闀垮害涓?,鍒嗛厤闀垮害涓?0 a.ReleaseBuffer();//娉ㄦ剰:a鎸囧悜鐨勫紩鐢ㄥ唴瀛樺潡鐨勫紩鐢ㄨ鏁頒負1,闀垮害涓?,鍒嗛厤闀垮害涓?0

}

//鎵ц鍒版錛屾墍鏈夌殑灞閮ㄥ彉閲忕敓鍛藉懆鏈熼兘宸茬粨鏉熴傚璞tr a b 鍚勮嚜璋冪敤鑷繁鐨勬瀽鏋勬瀯

//鍑芥暟錛屾墍鎸囧悜鐨勫紩鐢ㄥ唴瀛樺潡涔熺浉搴斿噺1

//娉ㄦ剰錛宻tr a b 鎵鍒嗗埆鎸囧悜鐨勫紩鐢ㄥ唴瀛樺潡鐨勮鏁板潎涓?,榪欏鑷存墍鍒嗛厤鐨勫唴瀛樺潡閲婃斁


閫氳繃瑙傚療涓婇潰鎵ц榪囩▼錛屾垜浠細鍙戠幇CString铏界劧鍙互澶氫釜瀵硅薄鎸囧悜鍚屼竴寮曠敤鍐呭潡瀛橈紝浣嗘槸瀹冧滑鍦ㄨ繘琛屽悇縐嶆嫹璐濄佽祴鍊煎強鏀瑰彉涓插唴瀹規(guī)椂錛屽畠鐨勫鐞嗘槸寰堟櫤鑳藉茍涓旈潪甯稿畨鍏ㄧ殑錛屽畬鍏ㄥ仛鍒頒簡浜掍笉騫叉秹銆佷簰涓嶅獎鍝嶃傚綋鐒跺繀欏昏姹備綘鐨勪唬鐮佷嬌鐢ㄦ紜伆褰擄紝鐗瑰埆鏄疄闄呬嬌鐢ㄤ腑浼氭湁鏇村鏉傜殑鎯呭喌錛屽鍋氬嚱鏁板弬鏁般佸紩鐢ㄣ佸強鏈夋椂闇淇濆瓨鍒癈StringList褰撲腑錛屽鏋滃摢鎬曟湁涓灝忓潡鍦版柟浣跨敤涓嶅綋錛屽叾緇撴灉涔熶細瀵艱嚧鍙戠敓涓嶅彲棰勭煡鐨勯敊璇?/p>


5 FreeExtra()鐨勪綔鐢?/p>

鐪嬭繖孌典唬鐮?/p>

(1) CString str("test");

(2) LPTSTR temp = str.GetBuffer(50);

(3) strcpy(temp, "there are 22 character");

(4) str.ReleaseBuffer();

(5) str.FreeExtra();

涓婇潰浠g爜鎵ц鍒扮(4)琛屾椂錛屽ぇ瀹墮兘鐭ラ亾str鎸囧悜鐨勫紩鐢ㄥ唴瀛樺潡璁℃暟涓?,闀垮害涓?2,鍒嗛厤闀垮害涓?0. 閭d箞鎵цstr.FreeExtra()鏃訛紝瀹冧細閲婃斁鎵鍒嗛厤鐨勫浣欑殑鍐呭瓨銆?寮曠敤鍐呭瓨鍧楄鏁頒負1,闀垮害涓?2,鍒嗛厤闀垮害涓?2)


6 Format(...) 涓?FormatV(...)

榪欐潯璇彞鍦ㄤ嬌鐢ㄤ腑鏄渶瀹規(guī)槗鍑洪敊鐨勩傚洜涓哄畠鏈瀵屾湁鎶宸фэ紝涔熺浉褰撶伒媧匯傚湪榪欓噷錛屾垜娌℃墦綆楀瀹冪粏緇嗗垎鏋愶紝瀹為檯涓妔printf(...)鎬庝箞鐢紝瀹冨氨鎬庝箞鐢ㄣ傛垜鍙彁閱掍嬌鐢ㄦ椂闇娉ㄦ剰涓鐐癸細灝辨槸瀹冪殑鍙傛暟鐨勭壒孌婃э紝鐢變簬緙栬瘧鍣ㄥ湪緙栬瘧鏃跺茍涓嶈兘鍘繪牎楠屾牸寮忎覆鍙傛暟涓庡搴旂殑鍙樺厓鐨勭被鍨嬪強闀垮害銆傛墍浠ヤ綘蹇呴』瑕佹敞鎰忥紝涓よ呬竴瀹氳瀵瑰簲涓婏紝

鍚﹀垯灝變細鍑洪敊銆傚錛?/p>

CString str;

int a = 12;

str.Format("first:%l, second: %s", a, "error");//result?璇曡瘯


7 LockBuffer() 涓?UnlockBuffer()

欏懼悕鎬濊錛岃繖涓や釜鍑芥暟鐨勪綔鐢ㄥ氨鏄寮曠敤鍐呭瓨鍧楄繘琛屽姞閿佸強瑙i攣銆備絾浣跨敤瀹冩湁浠涔堜綔鐢ㄥ強鎵ц榪囧畠鍚庡CString涓叉湁浠涔堝疄璐ㄤ笂鐨勫獎鍝嶃傚叾瀹炴尯綆鍗曪紝鐪嬩笅闈唬鐮?

(1) CString str("test");

(2) str.LockBuffer();

(3) CString temp = str;

(4) str.UnlockBuffer();

(5) str.LockBuffer();

(6) str = "error";

(7) str.ReleaseBuffer();

鎵ц瀹?3)鍚庯紝涓庨氬父鎯呭喌涓嬩笉鍚岋紝temp涓巗tr騫朵笉鎸囧悜鍚屼竴寮曠敤鍐呭瓨鍧椼備綘鍙互鍦╳atch紿楀彛鐢ㄨ繖涓〃杈懼紡(CStringData*)((CStringData*)(str.m_pchData)-1)鐪嬬湅銆?/p>

鍏跺疄鍦╩sdn涓湁璇存槑錛?/p>

While in a locked state, the string is protected in two ways:


No other string can get a reference to the data in the locked string, even if that string is assigned to the locked string.

The locked string will never reference another string, even if that other string is copied to the locked string.


8 CString 鍙槸澶勭悊涓插悧錛?/p>

涓嶅錛孋String涓嶅彧鏄兘鎿嶄綔涓詫紝鑰屼笖榪樿兘澶勭悊鍐呭瓨鍧楁暟鎹傚姛鑳藉畬鍠勫惂錛佺湅榪欐浠g爜

char p[20];

for(int loop=0; loop<sizeof(p); loop++)

{

p[loop] = 10-loop;

}

CString str((LPCTSTR)p, 20);

char temp[20];

memcpy(temp, str, str.GetLength());

str瀹屽叏鑳藉杞澆鍐呭瓨鍧梡鍒板唴瀛樺潡temp涓傛墍浠ヨ兘鐢–String鏉ュ鐞嗕簩榪涘埗鏁版嵁


8 AllocSysString()涓嶴etSysString(BSTR*)

榪欎袱涓嚱鏁版彁渚涗簡涓蹭笌BSTR鐨勮漿鎹€備嬌鐢ㄦ椂欏繪敞鎰忎竴鐐癸細褰撹皟鐢ˋllocSysString()鍚庯紝欏昏皟鐢ㄥ畠SysFreeString(...)


9 鍙傛暟鐨勫畨鍏ㄦ楠?/p>

鍦∕FC涓彁渚涗簡澶氫釜瀹忔潵榪涜鍙傛暟鐨勫畨鍏ㄦ鏌ワ紝濡傦細ASSERT. 鍏朵腑鍦–String涓篃涓嶄緥澶栵紝鏈夎澶氳繖鏍風(fēng)殑鍙傛暟媯楠岋紝鍏跺疄榪欎篃璇存槑浜嗕唬鐮佺殑瀹夊叏鎬ч珮錛屽彲鏈夋椂鎴戜滑浼氬彂鐜拌繖寰堢儲錛屼篃瀵艱嚧Debug涓嶳elease鐗堟湰涓嶄竴鏍鳳紝濡傛湁鏃剁▼搴廌ebug閫氭甯革紝鑰孯elease鍒欑▼搴忓穿婧冿紱鑰屾湁鏃舵伆鐩稿弽錛孌ebug涓嶈錛孯elease琛屻傚叾瀹炴垜涓漢璁や負錛屾垜浠CString鐨勪嬌鐢ㄨ繃紼嬩腑錛屽簲鍔涙眰浠g爜璐ㄩ噺楂橈紝涓嶈兘鍦―ebug鐗堟湰涓嚭鐜頒換浣曟柇璦妗嗭紝鍝時elease榪愯浼間箮鐪嬭搗鏉ヤ竴鍒囨甯搞備絾寰堜笉瀹夊叏銆傚涓嬩唬鐮侊細

(1) CString str("test");

(2) str.LockBuffer();

(3) LPTSTR temp = str.GetBuffer(10);

(4) strcpy(temp, "error");

(5) str.ReleaseBuffer();

(6) str.ReleaseBuffer();//鎵ц鍒版鏃訛紝Debug鐗堟湰浼氬脊鍑洪敊妗?/p>


10 CString鐨勫紓甯稿鐞?/p>

鎴戝彧鎯沖己璋冧竴鐐癸細鍙湁鍒嗛厤鍐呭瓨鏃訛紝鎵嶆湁鍙兘瀵艱嚧鎶涘嚭CMemoryException.

鍚屾牱錛屽湪msdn涓殑鍑芥暟澹版槑涓紝娉ㄦ湁throw( CMemoryException)鐨勫嚱鏁伴兘鏈夐噸鏂板垎閰嶆垨璋冩暣鍐呭瓨鐨勫彲鑳姐?/p>


11 璺ㄦā鍧楁椂鐨凜string銆傚嵆涓涓狣LL鐨勬帴鍙e嚱鏁頒腑鐨勫弬鏁頒負CString&鏃訛紝瀹冧細鍙戠敓鎬庢牱鐨勭幇璞°傝В絳旀垜閬囧埌鐨勯棶棰樸傛垜鐨勯棶棰樺師鏉ュ凡緇忓彂璐達紝鍦板潃涓猴細

http://www.csdn.net/expert/topic/741/741921.xml?temp=.2283136


鏋勯犱竴涓繖鏍稢String瀵硅薄鏃訛紝濡侰String str錛屼綘鍙煡閬撴鏃剁殑str鎵鎸囧悜鐨勫紩鐢ㄥ唴瀛樺潡鍚楋紵涔熻浣犱細璁や負瀹冩寚鍚慛ULL銆傚叾瀹炰笉瀵癸紝濡傛灉榪欐牱鐨勮瘽錛孋String鎵閲囩敤鐨勫紩鐢ㄦ満鍒剁鐞嗗唴瀛樺潡灝變細鏈夐夯鐑︿簡錛屾墍浠String鍦ㄦ瀯閫犱竴涓┖涓茬殑瀵硅薄鏃訛紝瀹冧細鎸囧悜涓涓浐瀹氱殑鍒濆鍖栧湴鍧錛岃繖鍧楁暟鎹殑澹版槑濡備笅錛?/p>

AFX_STATIC_DATA int _afxInitData[] = {-1,0,0,0};

綆瑕佹弿榪版鎷竴涓嬶細褰撴煇涓狢String瀵硅薄涓茬疆絀虹殑璇濓紝濡侲mpty(),CString a絳夛紝瀹冪殑鎴愬憳鍙橀噺m_pchData灝變細鎸囧悜_afxInitData榪欎釜鍙橀噺鐨勫湴鍧銆傚綋榪欎釜CString瀵硅薄鐢熷懡鍛ㄦ湡緇撴潫鏃訛紝姝e父鎯呭喌涓嬪畠浼氬幓瀵規(guī)墍鎸囧悜鐨勫紩鐢ㄥ唴瀛樺潡璁℃暟鍑?錛屽鏋滃紩鐢ㄨ鏁頒負0(鍗蟲病鏈変換浣旵String寮曠敤瀹冩椂)錛屽垯閲婃斁榪欏潡寮曠敤鍐呭瓨銆傝岀幇鍦ㄧ殑鎯呭喌鏄鏋淐String鎵鎸囧悜鐨勫紩鐢ㄥ唴瀛樺潡鏄垵濮嬪寲鍐呭瓨鍧楁椂錛屽垯涓嶄細閲婃斁浠諱綍鍐呭瓨銆?/p>


璇翠簡榪欎箞澶氾紝榪欎笌鎴戦亣鍒扮殑闂鏈変粈涔堝叧緋誨憿錛熷叾瀹炲叧緋誨ぇ鐫鍛紵鍏剁湡姝e師鍥犲氨鏄鏋渆xe妯″潡涓巇ll妯″潡鏈変竴涓槸static緙栬瘧榪炴帴鐨勮瘽銆傞偅涔堣繖涓狢String鍒濆鍖栨暟鎹湪exe妯″潡涓巇ll妯″潡涓湁涓嶅悓鐨勫湴鍧錛屽洜涓簊tatic榪炴帴鍒欎細鍦ㄦ湰妯″潡涓湁涓浠芥簮浠g爜鐨勬嫹璐濄傚彟澶栦竴縐嶆儏鍐碉紝濡傛灉涓や釜妯″潡閮芥槸share榪炴帴鐨勶紝CString鐨勫疄鐜頒唬鐮佸垯鍦ㄥ彟涓涓崟鐙殑dll涓疄鐜幫紝鑰孉FX_STATIC_DATA鎸囧畾鍙橀噺鍙涓嬈★紝鎵浠ヤ袱涓ā鍧椾腑_afxInitData鏈夌浉鍚岀殑鍦板潃銆?/p>

鐜板湪闂瀹屽叏鏄庣櫧浜嗗惂錛佷綘鍙互鑷繁鍘繪紨紺轟竴涓嬨?/p>

__declspec (dllexport) void test(CString& str)

{

str = "abdefakdfj";//濡傛灉鏄痵tatic榪炴帴錛屽茍涓斾紶鍏ョ殑str涓虹┖涓茬殑璇濓紝榪欓噷鍑洪敊銆?/p>

}


鏈鍚庝竴鐐規(guī)兂娉曪細鍐欏緱榪欓噷錛屽叾瀹濩String涓繕鏈夎澶氭妧宸фх殑濂戒笢涓滐紝鎴戝茍娌″幓瑙i噴銆傚寰堝閲嶈澆鐨勬搷浣滅銆佹煡鎵劇瓑銆傛垜璁や負榪樻槸璇︾粏鐪嬬湅msdn錛岃繖鏍蜂篃璁鎬細姣旀垜璁茬殑濂藉浜嗐傛垜鍙晶閲嶉偅浜涘彲鑳戒細鍑洪敊鐨勬儏鍐點傚綋鐒訛紝濡傛垜涓婇潰鍙欒堪涓湁閿欒錛屾暚璇烽珮鎵嬫寚鐐癸紝涓嶈儨鎰熻阿錛?/p>


msdn錛?a >http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmfc98/html/_mfc_cstring_class_members.asp



yunboy 2009-07-31 13:46 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧美区自拍先锋| 久久精品免费电影| 野花国产精品入口| 久久久久久久综合| 国产精品久久中文| 一本久久综合| 亚洲电影网站| 一本不卡影院| 欧美黑人国产人伦爽爽爽| 国产一区二区三区四区三区四| 亚洲淫性视频| 日韩一二在线观看| 欧美精品久久99久久在免费线| 亚洲福利av| 欧美高清视频| 免费的成人av| 日韩西西人体444www| 欧美韩国一区| 欧美承认网站| 一本色道精品久久一区二区三区| 亚洲国产第一| 欧美精品色综合| 亚洲视频一区二区在线观看| 日韩视频欧美视频| 欧美日韩在线不卡一区| 亚洲特黄一级片| 中文日韩在线| 国产老女人精品毛片久久| 午夜国产精品影院在线观看| 亚洲午夜视频在线观看| 国产精品男人爽免费视频1| 亚洲欧美日韩中文视频| 亚洲综合国产激情另类一区| 国产欧美亚洲精品| 久久亚洲精品视频| 久久婷婷国产综合国色天香| 亚洲精品乱码久久久久久黑人| 亚洲精品视频啊美女在线直播| 欧美视频在线观看 亚洲欧| 亚洲图片在线观看| 亚洲欧美在线免费观看| 狠狠v欧美v日韩v亚洲ⅴ| 美脚丝袜一区二区三区在线观看| 免费久久99精品国产| 一区二区三区免费网站| 亚洲综合清纯丝袜自拍| 精品成人久久| 99国产精品国产精品毛片| 国产欧美精品| 亚洲欧洲精品一区| 亚洲欧美三级伦理| 欧美激情视频网站| 久久久久综合网| 一本色道婷婷久久欧美| 亚洲免费综合| 91久久精品视频| 亚洲愉拍自拍另类高清精品| 在线观看国产成人av片| 亚洲精选久久| 韩国精品在线观看| 日韩一区二区久久| 影音先锋欧美精品| 一区二区电影免费观看| 经典三级久久| 午夜精品久久久久久久蜜桃app | 亚洲国产精品999| 欧美三区免费完整视频在线观看| 久久久久久尹人网香蕉| 亚洲丝袜av一区| 午夜久久影院| 亚洲夫妻自拍| 欧美在线综合视频| 最新日韩欧美| 欧美制服丝袜| 国产精品久久久久久久久久直播| 久久精品夜色噜噜亚洲a∨| 久久亚洲精品网站| 国产精品美女久久久久久久| 久久久久久一区二区三区| 欧美日韩一区二区在线| 久久久亚洲影院你懂的| 国产精品欧美激情| 亚洲大片在线观看| 国产一区久久久| 99re视频这里只有精品| 亚洲日本一区二区三区| 亚洲影院免费| 亚洲免费在线电影| 欧美成人蜜桃| 欧美国产丝袜视频| 国产一区二区三区黄视频| 亚洲综合二区| 亚洲尤物在线视频观看| 欧美日韩国产美| 欧美ed2k| 亚洲第一区在线观看| 亚洲欧美三级在线| 久久精品国产99国产精品澳门| 欧美日韩伊人| 亚洲午夜精品网| 99亚洲一区二区| 免费看亚洲片| 美国十次成人| 91久久久久| 久久永久免费| 亚洲第一级黄色片| 亚洲经典视频在线观看| 免费欧美高清视频| 久久久7777| 极品少妇一区二区| 99精品国产在热久久下载| 亚洲一区二区三区中文字幕在线| 久久亚裔精品欧美| 欧美日韩国产综合新一区| 在线观看91精品国产入口| 久久久久亚洲综合| 久久精品国产一区二区三区免费看| 国产一区二区三区久久悠悠色av| 中文精品视频| 久久久久国产精品一区三寸| 国产精品乱人伦一区二区| 欧美亚洲视频一区二区| 欧美影院精品一区| 国产亚洲观看| 久久精品国产亚洲精品| 美女免费视频一区| 亚洲福利视频网| 欧美日韩亚洲在线| 亚洲综合视频网| 久久中文字幕一区| 亚洲国产日韩欧美在线图片| 欧美二区视频| 亚洲欧洲一二三| 欧美一级专区免费大片| 国产一区二区三区久久悠悠色av| 免费观看日韩| 亚洲免费观看在线视频| 久久精品一区四区| 亚洲电影免费在线| 欧美视频一区二区在线观看| 亚洲欧美日韩精品| 欧美大片免费久久精品三p| 亚洲每日在线| 国产一区二区在线观看免费| 美日韩精品视频| 一区二区三区四区国产精品| 午夜精品一区二区三区电影天堂| 亚洲成在人线av| 欧美精品二区三区四区免费看视频| 午夜精品久久久久久久99黑人| 久久久综合网| 亚洲免费在线观看| 国产精品视频免费一区| 国内精品视频一区| 欧美黄色影院| 欧美一区观看| 亚洲国产一区二区三区在线播| 久久精品国产亚洲aⅴ| 国产一区深夜福利| 欧美福利视频网站| 久久香蕉国产线看观看av| 亚洲乱码精品一二三四区日韩在线| 久久麻豆一区二区| 夜夜狂射影院欧美极品| 18成人免费观看视频| 国产精品国产三级国产aⅴ浪潮| 美脚丝袜一区二区三区在线观看| 欧美激情中文不卡| 久久伊人一区二区| 欧美亚州在线观看| 欧美99在线视频观看| 久久青草欧美一区二区三区| 一本一本久久a久久精品综合麻豆| 亚洲高清毛片| 玖玖综合伊人| 久久久久久久久久看片| 亚洲男女毛片无遮挡| 中文国产成人精品久久一| 一本一本a久久| 亚洲国产精品日韩| 亚洲精品久久久久久久久久久| 国产午夜精品久久久| 国产区亚洲区欧美区| 欧美视频免费| 欧美日韩免费观看一区三区| 久久精品视频在线| 免费在线欧美黄色| 一区二区在线视频观看| 女仆av观看一区| 国产亚洲一级高清| 欧美国产在线观看| 久久久免费av| 久久福利影视| 午夜精品三级视频福利| 欧美成人精品不卡视频在线观看| 久久免费偷拍视频| 欧美成人xxx| 噜噜噜躁狠狠躁狠狠精品视频| 欧美jizzhd精品欧美巨大免费| 久久久久久电影|