锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久超碰97中文字幕,国产一区二区精品丝袜,国产日韩欧美在线看http://m.shnenglu.com/ivenher/category/175.htmlzh-cnTue, 20 May 2008 03:38:19 GMTTue, 20 May 2008 03:38:19 GMT60VC甯哥敤鏁版嵁綾誨瀷浣跨敤杞崲璇﹁Вhttp://m.shnenglu.com/ivenher/articles/2205.html鐖遍キ鐩?/dc:creator>鐖遍キ鐩?/author>Wed, 28 Dec 2005 03:33:00 GMThttp://m.shnenglu.com/ivenher/articles/2205.htmlhttp://m.shnenglu.com/ivenher/comments/2205.htmlhttp://m.shnenglu.com/ivenher/articles/2205.html#Feedback0http://m.shnenglu.com/ivenher/comments/commentRss/2205.htmlhttp://m.shnenglu.com/ivenher/services/trackbacks/2205.html
鏂囩珷鏍囬錛?B>VC甯哥敤鏁版嵁綾誨瀷浣跨敤杞崲璇﹁В
鍘?浣?鑰咃細紼嬩僵鍚?BR>鍘?鍑?澶勶細PCVC.NET
鍙?甯?鑰咃細loose_went
鍙戝竷綾誨瀷錛氳漿杞?BR>鍙戝竷鏃ユ湡錛?004-03-18
浠婃棩嫻忚錛?
鎬?嫻?瑙堬細537

鍒氭帴瑙C緙栫▼鐨勬湅鍙嬪線寰瀵硅澶氭暟鎹被鍨嬬殑杞崲鎰熷埌榪鋒儜涓嶈В錛屾湰鏂囧皢浠嬬粛涓浜涘父鐢ㄦ暟鎹被鍨嬬殑浣跨敤銆?

鎴戜滑鍏堝畾涔変竴浜涘父瑙佺被鍨嬪彉閲忓熶互璇存槑

int i = 100;
long l = 2001;
float f=300.2;
double d=12345.119;
char username[]="濂充緺紼嬩僵鍚?;
char temp[200];
char *buf;
CString str;
_variant_t v1;
_bstr_t v2;

涓銆佸叾瀹冩暟鎹被鍨嬭漿鎹負瀛楃涓?

鐭暣鍨?int)
itoa(i,temp,10);///灝唅杞崲涓哄瓧絎︿覆鏀懼叆temp涓?鏈鍚庝竴涓暟瀛楄〃紺哄崄榪涘埗
itoa(i,temp,2); ///鎸変簩榪涘埗鏂瑰紡杞崲
闀挎暣鍨?long)
ltoa(l,temp,10);


浜屻佷粠鍏跺畠鍖呭惈瀛楃涓茬殑鍙橀噺涓幏鍙栨寚鍚戣瀛楃涓茬殑鎸囬拡

CString鍙橀噺
str = "2008鍖椾含濂ヨ繍";
buf = (LPSTR)(LPCTSTR)str;
BSTR綾誨瀷鐨刜variant_t鍙橀噺
v1 = (_bstr_t)"紼嬪簭鍛?;
buf = _com_util::ConvertBSTRToString((_bstr_t)v1);

涓夈佸瓧絎︿覆杞崲涓哄叾瀹冩暟鎹被鍨?
strcpy(temp,"123");

鐭暣鍨?int)
i = atoi(temp);
闀挎暣鍨?long)
l = atol(temp);
嫻偣(double)
d = atof(temp);

鍥涖佸叾瀹冩暟鎹被鍨嬭漿鎹㈠埌CString
浣跨敤CString鐨勬垚鍛樺嚱鏁癋ormat鏉ヨ漿鎹?渚嬪:

鏁存暟(int)
str.Format("%d",i);
嫻偣鏁?float)
str.Format("%f",i);
瀛楃涓叉寚閽?char *)絳夊凡緇忚CString鏋勯犲嚱鏁版敮鎸佺殑鏁版嵁綾誨瀷鍙互鐩存帴璧嬪?
str = username;

浜斻丅STR銆乢bstr_t涓嶤ComBSTR

CComBSTR銆乢bstr_t鏄BSTR鐨勫皝瑁?BSTR鏄寚鍚戝瓧絎︿覆鐨?2浣嶆寚閽堛?
char *杞崲鍒癇STR鍙互榪欐牱: BSTR b=_com_util::ConvertStringToBSTR("鏁版嵁");///浣跨敤鍓嶉渶瑕佸姞涓婂ご鏂囦歡comutil.h
鍙嶄箣鍙互浣跨敤char *p=_com_util::ConvertBSTRToString(b);


鍏乂ARIANT 銆乢variant_t 涓?COleVariant

VARIANT鐨勭粨鏋勫彲浠ュ弬鑰冨ご鏂囦歡VC98\Include\OAIDL.H涓叧浜庣粨鏋勪綋tagVARIANT鐨勫畾涔夈?
瀵逛簬VARIANT鍙橀噺鐨勮祴鍊鹼細棣栧厛緇檝t鎴愬憳璧嬪鹼紝鎸囨槑鏁版嵁綾誨瀷錛屽啀瀵硅仈鍚堢粨鏋勪腑鐩稿悓鏁版嵁綾誨瀷鐨勫彉閲忚祴鍊鹼紝涓句釜渚嬪瓙錛?
VARIANT va;
int a=2001;
va.vt=VT_I4;///鎸囨槑鏁村瀷鏁版嵁
va.lVal=a; ///璧嬪?

瀵逛簬涓嶉┈涓婅祴鍊肩殑VARIANT錛屾渶濂藉厛鐢╒oid VariantInit(VARIANTARG FAR* pvarg);榪涜鍒濆鍖?鍏舵湰璐ㄦ槸灝唙t璁劇疆涓篤T_EMPTY,涓嬭〃鎴戜滑鍒椾婦vt涓庡父鐢ㄦ暟鎹殑瀵瑰簲鍏崇郴:

unsigned char bVal; VT_UI1
short iVal; VT_I2
long lVal; VT_I4
float fltVal; VT_R4
double dblVal; VT_R8
VARIANT_BOOL boolVal; VT_BOOL
SCODE scode; VT_ERROR
CY cyVal; VT_CY
DATE date; VT_DATE
BSTR bstrVal; VT_BSTR
IUnknown FAR* punkVal; VT_UNKNOWN
IDispatch FAR* pdispVal; VT_DISPATCH
SAFEARRAY FAR* parray; VT_ARRAY|*
unsigned char FAR* pbVal; VT_BYREF|VT_UI1
short FAR* piVal; VT_BYREF|VT_I2
long FAR* plVal; VT_BYREF|VT_I4
float FAR* pfltVal; VT_BYREF|VT_R4
double FAR* pdblVal; VT_BYREF|VT_R8
VARIANT_BOOL FAR* pboolVal; VT_BYREF|VT_BOOL
SCODE FAR* pscode; VT_BYREF|VT_ERROR
CY FAR* pcyVal; VT_BYREF|VT_CY
DATE FAR* pdate; VT_BYREF|VT_DATE
BSTR FAR* pbstrVal; VT_BYREF|VT_BSTR
IUnknown FAR* FAR* ppunkVal; VT_BYREF|VT_UNKNOWN
IDispatch FAR* FAR* ppdispVal; VT_BYREF|VT_DISPATCH
SAFEARRAY FAR* FAR* pparray; VT_ARRAY|*
VARIANT FAR* pvarVal; VT_BYREF|VT_VARIANT
void FAR* byref; VT_BYREF

_variant_t鏄疺ARIANT鐨勫皝瑁呯被錛屽叾璧嬪煎彲浠ヤ嬌鐢ㄥ己鍒剁被鍨嬭漿鎹紝鍏舵瀯閫犲嚱鏁頒細鑷姩澶勭悊榪欎簺鏁版嵁綾誨瀷銆?
渚嬪錛?
long l=222;
ing i=100;
_variant_t lVal(l);
lVal = (long)i;

COleVariant鐨勪嬌鐢ㄤ笌_variant_t鐨勬柟娉曞熀鏈竴鏍鳳紝璇峰弬鑰冨涓嬩緥瀛愶細
COleVariant v3 = "瀛楃涓?, v4 = (long)1999;
CString str =(BSTR)v3.pbstrVal;
long i = v4.lVal;

涓冦佸叾瀹?

瀵規秷鎭殑澶勭悊涓垜浠粡甯擱渶瑕佸皢WPARAM鎴朙PARAM絳?2浣嶆暟鎹?DWORD)鍒嗚В鎴愪袱涓?6浣嶆暟鎹?WORD),渚嬪錛?
LPARAM lParam;
WORD loValue = LOWORD(lParam);///鍙栦綆16浣?
WORD hiValue = HIWORD(lParam);///鍙栭珮16浣?
瀵逛簬16浣嶇殑鏁版嵁(WORD)鎴戜滑鍙互鐢ㄥ悓鏍風殑鏂規硶鍒嗚В鎴愰珮浣庝袱涓?浣嶆暟鎹?BYTE),渚嬪:
WORD wValue;
BYTE loValue = LOBYTE(wValue);///鍙栦綆8浣?
BYTE hiValue = HIBYTE(wValue);///鍙栭珮8浣?
鍚庤錛氭湰鏂囧寙鍖嗗啓鎴愶紝閿欒涔嬪鍦ㄦ墍闅懼厤錛屾榪庢潵淇℃寚姝c?


緗戝弸瀵硅鏂囩珷鐨勮瘎璁?
緗戝弸: catch(hw.wh.cn@163.net) 鍙戣〃浜? 2003-4-27 20:27:05

鎴戜互鍓嶅ぇ瀛︽椂瀛﹁繃C璇█錛屼絾宸ヤ綔鍚庡氨涓鐩存病鐢ㄤ簡(澶ф鏈変袱騫翠簡)錛岀幇鍦ㄦ兂浠庡ご瀛︼紝璇烽棶鎴戝彲浠ョ洿鎺ュ涔爒c++鍚楋紵濡傛灉鍙互錛岃闂垜鏈変粈涔堝湴鏂硅娉ㄦ剰鐨勫悧錛?

鎴戞兂璇鋒偍鍛婅瘔鎴戞偍鐨勯偖綆卞湴鍧鍜屾偍鐨凲Q鍙風爜錛岃繖鏍鋒垜鏈夐棶棰樺氨鍙互鍚戞偍璇鋒暀浜嗭紝濂藉悧錛?
濡傚悓鎰忥紝鍙彂鍒版垜鐨勯偖綆憋細hw.wh.cn@163.net
璋㈣阿錛?

緗戝弸: 鍖垮悕 鍙戣〃浜? 2003-4-27 20:26:29

鎴戜互鍓嶅ぇ瀛︽椂瀛﹁繃C璇█錛屼絾宸ヤ綔鍚庡氨涓鐩存病鐢ㄤ簡(澶ф鏈変袱騫翠簡)錛岀幇鍦ㄦ兂浠庡ご瀛︼紝璇烽棶鎴戝彲浠ョ洿鎺ュ涔爒c++鍚楋紵濡傛灉鍙互錛岃闂垜鏈変粈涔堝湴鏂硅娉ㄦ剰鐨勫悧錛?

鎴戞兂璇鋒偍鍛婅瘔鎴戞偍鐨勯偖綆卞湴鍧鍜屾偍鐨凲Q鍙風爜錛岃繖鏍鋒垜鏈夐棶棰樺氨鍙互鍚戞偍璇鋒暀浜嗭紝濂藉悧錛?
濡傚悓鎰忥紝鍙彂鍒版垜鐨勯偖綆憋細hw.wh.cn@163.net
璋㈣阿錛?

緗戝弸: qlong(zhanglongping@163.com) 鍙戣〃浜? 2003-4-25 19:59:09

鍒氭帴瑙C緙栫▼鐨勬湅鍙嬪線寰瀵硅澶氭暟鎹被鍨嬬殑杞崲鎰熷埌榪鋒儜涓嶈В錛屾湰鏂囧皢浠嬬粛涓浜涘父鐢ㄦ暟鎹被鍨嬬殑浣跨敤銆?

鎴戜滑鍏堝畾涔変竴浜涘父瑙佺被鍨嬪彉閲忓熶互璇存槑

int i = 100;
long l = 2001;
float f=300.2;
double d=12345.119;
char username[]="濂充緺紼嬩僵鍚?;
char temp[200];
char *buf;
CString str;
_variant_t v1;
_bstr_t v2;

涓銆佸叾瀹冩暟鎹被鍨嬭漿鎹負瀛楃涓?

鐭暣鍨?int)
itoa(i,temp,10);///灝唅杞崲涓哄瓧絎︿覆鏀懼叆temp涓?鏈鍚庝竴涓暟瀛楄〃紺哄崄榪涘埗
itoa(i,temp,2); ///鎸変簩榪涘埗鏂瑰紡杞崲
闀挎暣鍨?long)
ltoa(l,temp,10);


浜屻佷粠鍏跺畠鍖呭惈瀛楃涓茬殑鍙橀噺涓幏鍙栨寚鍚戣瀛楃涓茬殑鎸囬拡

CString鍙橀噺
str = "2008鍖椾含濂ヨ繍";
buf = (LPSTR)(LPCTSTR)str;
BSTR綾誨瀷鐨刜variant_t鍙橀噺
v1 = (_bstr_t)"紼嬪簭鍛?;
buf = _com_util::ConvertBSTRToString((_bstr_t)v1);

涓夈佸瓧絎︿覆杞崲涓哄叾瀹冩暟鎹被鍨?
strcpy(temp,"123");

鐭暣鍨?int)
i = atoi(temp);
闀挎暣鍨?long)
l = atol(temp);
嫻偣(double)
d = atof(temp);

鍥涖佸叾瀹冩暟鎹被鍨嬭漿鎹㈠埌CString
浣跨敤CString鐨勬垚鍛樺嚱鏁癋ormat鏉ヨ漿鎹?渚嬪:

鏁存暟(int)
str.Format("%d",i);
嫻偣鏁?float)
str.Format("%f",i);
瀛楃涓叉寚閽?char *)絳夊凡緇忚CString鏋勯犲嚱鏁版敮鎸佺殑鏁版嵁綾誨瀷鍙互鐩存帴璧嬪?
str = username;

浜斻丅STR銆乢bstr_t涓嶤ComBSTR

CComBSTR銆乢bstr_t鏄BSTR鐨勫皝瑁?BSTR鏄寚鍚戝瓧絎︿覆鐨?2浣嶆寚閽堛?
char *杞崲鍒癇STR鍙互榪欐牱: BSTR b=_com_util::ConvertStringToBSTR("鏁版嵁");///浣跨敤鍓嶉渶瑕佸姞涓婂ご鏂囦歡comutil.h
鍙嶄箣鍙互浣跨敤char *p=_com_util::ConvertBSTRToString(b);


鍏乂ARIANT 銆乢variant_t 涓?COleVariant

VARIANT鐨勭粨鏋勫彲浠ュ弬鑰冨ご鏂囦歡VC98\Include\OAIDL.H涓叧浜庣粨鏋勪綋tagVARIANT鐨勫畾涔夈?
瀵逛簬VARIANT鍙橀噺鐨勮祴鍊鹼細棣栧厛緇檝t鎴愬憳璧嬪鹼紝鎸囨槑鏁版嵁綾誨瀷錛屽啀瀵硅仈鍚堢粨鏋勪腑鐩稿悓鏁版嵁綾誨瀷鐨勫彉閲忚祴鍊鹼紝涓句釜渚嬪瓙錛?
VARIANT va;
int a=2001;
va.vt=VT_I4;///鎸囨槑鏁村瀷鏁版嵁
va.lVal=a; ///璧嬪?

瀵逛簬涓嶉┈涓婅祴鍊肩殑VARIANT錛屾渶濂藉厛鐢╒oid VariantInit(VARIANTARG FAR* pvarg);榪涜鍒濆鍖?鍏舵湰璐ㄦ槸灝唙t璁劇疆涓篤T_EMPTY,涓嬭〃鎴戜滑鍒椾婦vt涓庡父鐢ㄦ暟鎹殑瀵瑰簲鍏崇郴:

unsigned char bVal; VT_UI1
short iVal; VT_I2
long lVal; VT_I4
float fltVal; VT_R4
double dblVal; VT_R8
VARIANT_BOOL boolVal; VT_BOOL
SCODE scode; VT_ERROR
CY cyVal; VT_CY
DATE date; VT_DATE
BSTR bstrVal; VT_BSTR
IUnknown FAR* punkVal; VT_UNKNOWN
IDispatch FAR* pdispVal; VT_DISPATCH
SAFEARRAY FAR* parray; VT_ARRAY|*
unsigned char FAR* pbVal; VT_BYREF|VT_UI1
short FAR* piVal; VT_BYREF|VT_I2
long FAR* plVal; VT_BYREF|VT_I4
float FAR* pfltVal; VT_BYREF|VT_R4
double FAR* pdblVal; VT_BYREF|VT_R8
VARIANT_BOOL FAR* pboolVal; VT_BYREF|VT_BOOL
SCODE FAR* pscode; VT_BYREF|VT_ERROR
CY FAR* pcyVal; VT_BYREF|VT_CY
DATE FAR* pdate; VT_BYREF|VT_DATE
BSTR FAR* pbstrVal; VT_BYREF|VT_BSTR
IUnknown FAR* FAR* ppunkVal; VT_BYREF|VT_UNKNOWN
IDispatch FAR* FAR* ppdispVal; VT_BYREF|VT_DISPATCH
SAFEARRAY FAR* FAR* pparray; VT_ARRAY|*
VARIANT FAR* pvarVal; VT_BYREF|VT_VARIANT
void FAR* byref; VT_BYREF

_variant_t鏄疺ARIANT鐨勫皝瑁呯被錛屽叾璧嬪煎彲浠ヤ嬌鐢ㄥ己鍒剁被鍨嬭漿鎹紝鍏舵瀯閫犲嚱鏁頒細鑷姩澶勭悊榪欎簺鏁版嵁綾誨瀷銆?
渚嬪錛?
long l=222;
ing i=100;
_variant_t lVal(l);
lVal = (long)i;

COleVariant鐨勪嬌鐢ㄤ笌_variant_t鐨勬柟娉曞熀鏈竴鏍鳳紝璇峰弬鑰冨涓嬩緥瀛愶細
COleVariant v3 = "瀛楃涓?, v4 = (long)1999;
CString str =(BSTR)v3.pbstrVal;
long i = v4.lVal;

涓冦佸叾瀹?

瀵規秷鎭殑澶勭悊涓垜浠粡甯擱渶瑕佸皢WPARAM鎴朙PARAM絳?2浣嶆暟鎹?DWORD)鍒嗚В鎴愪袱涓?6浣嶆暟鎹?WORD),渚嬪錛?
LPARAM lParam;
WORD loValue = LOWORD(lParam);///鍙栦綆16浣?
WORD hiValue = HIWORD(lParam);///鍙栭珮16浣?
瀵逛簬16浣嶇殑鏁版嵁(WORD)鎴戜滑鍙互鐢ㄥ悓鏍風殑鏂規硶鍒嗚В鎴愰珮浣庝袱涓?浣嶆暟鎹?BYTE),渚嬪:
WORD wValue;
BYTE loValue = LOBYTE(wValue);///鍙栦綆8浣?
BYTE hiValue = HIBYTE(wValue);///鍙栭珮8浣?


]]>
鍏充簬CString鎬葷粨http://m.shnenglu.com/ivenher/articles/1056.html鐖遍キ鐩?/dc:creator>鐖遍キ鐩?/author>Fri, 11 Nov 2005 03:16:00 GMThttp://m.shnenglu.com/ivenher/articles/1056.htmlhttp://m.shnenglu.com/ivenher/comments/1056.htmlhttp://m.shnenglu.com/ivenher/articles/1056.html#Feedback0http://m.shnenglu.com/ivenher/comments/commentRss/1056.htmlhttp://m.shnenglu.com/ivenher/services/trackbacks/1056.html 

鍏充簬CString鎬葷粨

 

 鍓嶈█錛氫覆鎿嶄綔鏄紪紼嬩腑鏈甯哥敤涔熸渶鍩烘湰鐨勬搷浣滀箣涓銆?/SPAN> 鍋氫負VC紼嬪簭鍛橈紝鏃犺鏄彍楦熸垨楂樻墜閮芥浘鐢ㄨ繃Cstring銆傝屼笖濂藉儚瀹為檯緙栫▼涓緢闅劇寰楀紑瀹冿紙铏界劧瀹冧笉鏄爣鍑嗭跡++涓殑搴擄級銆傚洜涓?/SPAN>MFC涓彁渚涚殑榪欎釜綾誨鎴戜滑鎿嶄綔瀛椾覆瀹炲湪澶柟渚夸簡錛?/SPAN>CString涓嶄粎鎻愪緵鍚勭涓板瘜鐨勬搷浣滃嚱鏁般佹搷浣滅閲嶈澆錛屼嬌鎴戜滑浣跨敤璧蜂覆璧鋒潵鏇磋薄basic涓偅鏍風洿瑙傦紱鑰屼笖瀹冭繕鎻愪緵浜嗗姩鎬佸唴瀛樺垎閰嶏紝浣挎垜浠噺灝戜簡澶氬皯瀛楃涓叉暟緇勮秺鐣岀殑闅愭偅銆備絾鏄紝鎴戜滑鍦ㄤ嬌鐢ㄨ繃紼嬩腑涔熶綋浼氬埌CString綆鐩村お瀹規槗鍑洪敊浜嗭紝鑰屼笖鏈夌殑涓嶅彲鎹夋懜銆傛墍浠ユ湁璁稿楂樹漢绔欒繃鏉ワ紝寤鴻鎶涘純瀹冦?/SPAN>

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

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

1錛?/SPAN> CString瀹炵幇鐨勬満鍒?/SPAN>.

   CString鏄氳繃鈥滃紩鐢ㄢ濇潵綆$悊涓茬殑錛屸滃紩鐢ㄢ濊繖涓瘝鎴戠浉淇″ぇ瀹跺茍涓嶉檶鐢燂紝璞?/SPAN>Window鍐呮牳瀵硅薄銆?/SPAN>COM瀵硅薄絳夐兘鏄氳繃寮曠敤鏉ュ疄鐜扮殑銆傝?/SPAN>CString涔熸槸閫氳繃榪欐牱鐨勬満鍒舵潵綆$悊鍒嗛厤鐨勫唴瀛樺潡銆傚疄闄呬笂CString瀵硅薄鍙湁涓涓寚閽堟垚鍛樺彉閲?/SPAN>,鎵浠ヤ換浣?/SPAN>CString瀹炰緥鐨勯暱搴﹀彧鏈?/SPAN>4瀛楄妭.

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

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

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

str                               0x40404040

姝e洜涓哄姝わ紝涓涓繖鏍風殑鍐呭瓨鍧楀彲琚涓?/SPAN>CString鎵寮曠敤錛屼緥濡備笅鍒椾唬鐮侊細

CString str("abcd");

CString a = str;

CString b(str);

CString c;

c = b;

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

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

struct CStringData

{

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

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

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

};

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

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

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

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

 

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

2錛?/SPAN>LPCTSTR 涓?/SPAN> GetBuffer(int nMinBufLength)

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

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

          CString str;

          const char* p = (LPCTSTR)str;

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

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

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

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

        CString str("abcd");

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

        p[2] = 'z';  

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

        CString str("abcd");

        CString test = str;

        ....

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

        p[2] = 'z';  

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

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

     

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

        CString str("abcd");

        CString test = str;

        ....

        char* p = str.GetBuffer(20);

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

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

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

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

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

      char* p = NULL;

      const char* q = NULL;

      {

          CString str = "abcd";

          q = (LPCTSTR)str;

          p = str.GetBuffer(20);

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

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

      }

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

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

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

 

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

 

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

   void Test()

   {

CString str("abcd");

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

CString a;

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

a = str;

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

CString b(a);

//a銆?/SPAN>b涓?/SPAN>str鎸囧悜鍚屼竴寮曠敤鍐呭瓨鍧楋紙寮曠敤鍐呭瓨鍧楃殑寮曠敤璁℃暟涓?/SPAN>3,闀垮害涓?/SPAN>4,鍒嗛厤闀垮害涓?/SPAN>4錛?/SPAN>

     {

        LPCTSTR temp = (LPCTSTR)a;

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

        CString d = a;

//a銆?/SPAN>b銆?/SPAN>d涓?/SPAN>str鎸囧悜鍚屼竴寮曠敤鍐呭瓨鍧楋紙寮曠敤鍐呭瓨鍧楃殑寮曠敤璁℃暟涓?/SPAN>4,                                闀垮害涓?/SPAN>4,鍒嗛厤闀垮害涓?/SPAN>4錛?/SPAN>

        b = "testa";

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

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

}

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

LPTSTR temp = a.GetBuffer(10);

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

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

strcpy(temp, "temp");

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

   }

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

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

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

  

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

 

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

   鐪嬭繖孌典唬鐮?/SPAN>

   (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鎸囧悜鐨勫紩鐢ㄥ唴瀛樺潡璁℃暟涓?/SPAN>1,闀垮害涓?/SPAN>22,鍒嗛厤闀垮害涓?/SPAN>50. 閭d箞鎵цstr.FreeExtra()鏃訛紝瀹冧細閲婃斁鎵鍒嗛厤鐨勫浣欑殑鍐呭瓨銆?/SPAN>(寮曠敤鍐呭瓨鍧楄鏁頒負1,闀垮害涓?/SPAN>22,鍒嗛厤闀垮害涓?/SPAN>22)

 

6  Format(...)  涓?/SPAN> FormatV(...)

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

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

   CString str;

   int a = 12;

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

 

7  LockBuffer() 涓?/SPAN> UnlockBuffer()

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

   (1)   CString str("test");

   (2)   str.LockBuffer();

   (3)   CString temp = str;

   (4)   str.UnlockBuffer();

   (5)   str.LockBuffer();

   (6)   str = "error";

   (7)   str.ReleaseBuffer();

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

   鍏跺疄鍦?/SPAN>msdn涓湁璇存槑錛?/SPAN>

        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 鍙槸澶勭悊涓插悧錛?/SPAN>

   涓嶅錛?/SPAN>CString涓嶅彧鏄兘鎿嶄綔涓詫紝鑰屼笖榪樿兘澶勭悊鍐呭瓨鍧楁暟鎹傚姛鑳藉畬鍠勫惂錛佺湅榪欐浠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瀹屽叏鑳藉杞澆鍐呭瓨鍧?/SPAN>p鍒板唴瀛樺潡temp涓傛墍浠ヨ兘鐢?/SPAN>CString鏉ュ鐞嗕簩榪涘埗鏁版嵁

 

8  AllocSysString()涓?/SPAN>SetSysString(BSTR*)

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

 

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

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

   (1)   CString str("test");

   (2)   str.LockBuffer();

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

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

   (5)   str.ReleaseBuffer();

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

 

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

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

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

 

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

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

 

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

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

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

 

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

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

  __declspec (dllexport) void test(CString& str)

  {

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

  }

 

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



]]>
鎸囬拡鍑芥暟鍜屽嚱鏁版寚閽?/title><link>http://m.shnenglu.com/ivenher/articles/915.html</link><dc:creator>鐖遍キ鐩?/dc:creator><author>鐖遍キ鐩?/author><pubDate>Thu, 03 Nov 2005 03:26:00 GMT</pubDate><guid>http://m.shnenglu.com/ivenher/articles/915.html</guid><wfw:comment>http://m.shnenglu.com/ivenher/comments/915.html</wfw:comment><comments>http://m.shnenglu.com/ivenher/articles/915.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/ivenher/comments/commentRss/915.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/ivenher/services/trackbacks/915.html</trackback:ping><description><![CDATA[<SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">涓銆佹寚閽堝嚱鏁?SPAN lang=EN-US><BR>    </SPAN>褰撲竴涓嚱鏁板0鏄庡叾榪斿洖鍊間負涓涓寚閽堟椂錛屽疄闄呬笂灝辨槸榪斿洖涓涓湴鍧緇欒皟鐢ㄥ嚱鏁幫紝浠ョ敤浜庨渶瑕佹寚閽堟垨鍦板潃鐨勮〃杈懼紡涓?SPAN lang=EN-US><BR>    </SPAN>鏍煎紡錛?SPAN lang=EN-US><BR>         </SPAN>綾誨瀷璇存槑絎?SPAN lang=EN-US> * </SPAN>鍑芥暟鍚?SPAN lang=EN-US>(</SPAN>鍙傛暟<SPAN lang=EN-US>)<BR>    </SPAN>褰撶劧浜嗭紝鐢變簬榪斿洖鐨勬槸涓涓湴鍧錛屾墍浠ョ被鍨嬭鏄庣涓鑸兘鏄?SPAN lang=EN-US>int</SPAN>銆?SPAN lang=EN-US><BR>    </SPAN>渚嬪錛?SPAN lang=EN-US>int *GetDate();<BR>          int * aaa(int,int);<BR>    </SPAN>鍑芥暟榪斿洖鐨勬槸涓涓湴鍧鍊鹼紝緇忓父浣跨敤鍦ㄨ繑鍥炴暟緇勭殑鏌愪竴鍏冪礌鍦板潃涓娿?SPAN lang=EN-US><BR><BR>        int * GetDate(int wk,int dy);<BR><BR>        main()<BR>        {<BR>            int wk,dy;<BR>            do<BR>            {<BR>                printf("Enter week(1-5)day(1-7)\n");<BR>                scanf("%d%d",&wk,&dy);<BR>            }<BR>            while(wk<1||wk>5||dy<1||dy>7);<BR>            printf("%d\n",*GetDate(wk,dy));<BR>        }<BR><BR>        int * GetDate(int wk,int dy)<BR>        {<BR>            static int calendar[5][7]=<BR>            {<BR>               {1,2,3,4,5,6,7},<BR>               {8,9,10,11,12,13,14},<BR>               {15,16,17,18,19,20,21},<BR>               {22,23,24,25,26,27,28},<BR>               {29,30,31,-1}<BR>            };<BR>            return &calendar[wk-1][dy-1];<BR>        }<BR>        </SPAN>紼嬪簭搴旇鏄緢濂界悊瑙g殑錛屽瓙鍑芥暟榪斿洖鐨勬槸鏁扮粍鏌愬厓绱犵殑鍦板潃銆傝緭鍑虹殑鏄繖涓湴鍧閲岀殑鍊箋?SPAN lang=EN-US><BR><BR></SPAN>浜屻佸嚱鏁版寚閽?SPAN lang=EN-US><BR>    </SPAN>鎸囧悜鍑芥暟鐨勬寚閽堝寘鍚簡鍑芥暟鐨勫湴鍧錛屽彲浠ラ氳繃瀹冩潵璋冪敤鍑芥暟銆傚0鏄庢牸寮忓涓嬶細<SPAN lang=EN-US><BR>        </SPAN>綾誨瀷璇存槑絎?SPAN lang=EN-US> (*</SPAN>鍑芥暟鍚?SPAN lang=EN-US>)(</SPAN>鍙傛暟<SPAN lang=EN-US>)<BR>    </SPAN>鍏跺疄榪欓噷涓嶈兘縐頒負鍑芥暟鍚嶏紝搴旇鍙仛鎸囬拡鐨勫彉閲忓悕銆傝繖涓壒孌婄殑鎸囬拡鎸囧悜涓涓繑鍥炴暣鍨嬪肩殑鍑芥暟銆傛寚閽堢殑澹版槑絎斿墛鍜屽畠鎸囧悜鍑芥暟鐨勫0鏄庝繚鎸佷竴鑷淬?SPAN lang=EN-US><BR>        </SPAN>鎸囬拡鍚嶅拰鎸囬拡榪愮畻絎﹀闈㈢殑鎷彿鏀瑰彉浜嗛粯璁ょ殑榪愮畻絎︿紭鍏堢駭銆傚鏋滄病鏈夊渾鎷彿錛屽氨鍙樻垚浜嗕竴涓繑鍥炴暣鍨嬫寚閽堢殑鍑芥暟鐨勫師鍨嬪0鏄庛?SPAN lang=EN-US><BR>    </SPAN>渚嬪錛?SPAN lang=EN-US><BR>        void (*fptr)();<BR>    </SPAN>鎶婂嚱鏁扮殑鍦板潃璧嬪肩粰鍑芥暟鎸囬拡錛屽彲浠ラ噰鐢ㄤ笅闈袱縐嶅艦寮忥細<SPAN lang=EN-US><BR>        fptr=&Function;<BR>        fptr=Function;<BR>    </SPAN>鍙栧湴鍧榪愮畻絎?SPAN lang=EN-US>&</SPAN>涓嶆槸蹇呴渶鐨勶紝鍥犱負鍗曞崟涓涓嚱鏁版爣璇嗙灝辨爣鍙瘋〃紺轟簡瀹冪殑鍦板潃錛屽鏋滄槸鍑芥暟璋冪敤錛岃繕蹇呴』鍖呭惈涓涓渾鎷彿鎷搗鏉ョ殑鍙傛暟琛ㄣ?SPAN lang=EN-US><BR>    </SPAN>鍙互閲囩敤濡備笅涓ょ鏂瑰紡鏉ラ氳繃鎸囬拡璋冪敤鍑芥暟錛?SPAN lang=EN-US><BR>        x=(*fptr)();<BR>        x=fptr();<BR>    </SPAN>絎簩縐嶆牸寮忕湅涓婂幓鍜屽嚱鏁拌皟鐢ㄦ棤寮傘備絾鏄湁浜涚▼搴忓憳鍊懼悜浜庝嬌鐢ㄧ涓縐嶆牸寮忥紝鍥犱負瀹冩槑紜寚鍑烘槸閫氳繃鎸囬拡鑰岄潪鍑芥暟鍚嶆潵璋冪敤鍑芥暟鐨勩備笅闈婦涓涓緥瀛愶細<SPAN lang=EN-US><BR><BR>        void (*funcp)();<BR>        void FileFunc(),EditFunc();<BR><BR>        main()<BR>        {<BR>            funcp=FileFunc;<BR>            (*funcp)();<BR>            funcp=EditFunc;<BR>            (*funcp)();<BR>        }<BR><BR>        void FileFunc()<BR>        {<BR>            printf("FileFunc\n");<BR>        }<BR><BR>        void EditFunc()<BR>        {<BR>            printf("EditFunc\n");<BR>        }<BR><BR>        </SPAN>紼嬪簭杈撳嚭涓猴細<SPAN lang=EN-US><BR>            FileFunc<BR>            EditFunc<BR><BR></SPAN>涓夈佹寚閽堢殑鎸囬拡<SPAN lang=EN-US><BR>    </SPAN>鎸囬拡鐨勬寚閽堢湅涓婂幓鏈変簺浠や漢璐硅В銆傚畠浠殑澹版槑鏈変袱涓槦鍙楓備緥濡傦細<SPAN lang=EN-US><BR>        char ** cp;<BR>    </SPAN>濡傛灉鏈変笁涓槦鍙鳳紝閭e氨鏄寚閽堢殑鎸囬拡鐨勬寚閽堬紝鍥涗釜鏄熷彿灝辨槸鎸囬拡鐨勬寚閽堢殑鎸囬拡鐨勬寚閽堬紝渚濇綾繪帹銆傚綋浣犵啛鎮変簡綆鍗曠殑渚嬪瓙浠ュ悗錛屽氨鍙互搴斾粯澶嶆潅鐨勬儏鍐典簡銆傚綋鐒訛紝瀹為檯紼嬪簭涓紝涓鑸篃鍙敤鍒頒簩綰ф寚閽堬紝涓変釜鏄熷彿涓嶅父瑙侊紝鏇村埆璇村洓涓槦鍙蜂簡銆?SPAN lang=EN-US><BR>    </SPAN>鎸囬拡鐨勬寚閽堥渶瑕佺敤鍒版寚閽堢殑鍦板潃銆?SPAN lang=EN-US><BR>        char c='A';<BR>        char *p=&c;<BR>        char **cp=&p;<BR>    </SPAN>閫氳繃鎸囬拡鐨勬寚閽堬紝涓嶄粎鍙互璁塊棶瀹冩寚鍚戠殑鎸囬拡錛岃繕鍙互璁塊棶瀹冩寚鍚戠殑鎸囬拡鎵鎸囧悜鐨勬暟鎹備笅闈㈠氨鏄嚑涓繖鏍風殑渚嬪瓙錛?SPAN lang=EN-US><BR>        char *p1=*cp;<BR>        char c1=**cp;<BR>    </SPAN>浣犲彲鑳芥兂鐭ラ亾榪欐牱鐨勭粨鏋勬湁浠涔堢敤銆傚埄鐢ㄦ寚閽堢殑鎸囬拡鍙互鍏佽琚皟鐢ㄥ嚱鏁頒慨鏀瑰眬閮ㄦ寚閽堝彉閲忓拰澶勭悊鎸囬拡鏁扮粍銆?SPAN lang=EN-US><BR><BR>        void FindCredit(int **);<BR><BR>        main()<BR>        {<BR>            int vals[]={7,6,5,-4,3,2,1,0};<BR>            int *fp=vals;<BR>            FindCredit(&fp);<BR>            printf("%d\n",*fp);<BR>        }<BR><BR>        void FindCredit(int ** fpp)<BR>        {<BR>            while(**fpp!=0)<BR>            if(**fpp<0) break;<BR>            else (*fpp)++;<BR>        }<BR><BR>    </SPAN>棣栧厛鐢ㄤ竴涓暟緇勭殑鍦板潃鍒濆鍖栨寚閽?SPAN lang=EN-US>fp</SPAN>錛岀劧鍚庢妸璇ユ寚閽堢殑鍦板潃浣滀負瀹炲弬浼犻掔粰鍑芥暟<SPAN lang=EN-US>FindCredit()</SPAN>銆?SPAN lang=EN-US>FindCredit()</SPAN>鍑芥暟閫氳繃琛ㄨ揪寮?SPAN lang=EN-US>**fpp</SPAN>闂存帴鍦板緱鍒版暟緇勪腑鐨勬暟鎹備負閬嶅巻鏁扮粍浠ユ壘鍒頒竴涓礋鍊鹼紝<SPAN lang=EN-US>FindCredit()</SPAN>鍑芥暟榪涜鑷榪愮畻鐨勫璞℃槸璋冪敤鑰呯殑鎸囧悜鏁扮粍鐨勬寚閽堬紝鑰屼笉鏄畠鑷繁鐨勬寚鍚戣皟鐢ㄨ呮寚閽堢殑鎸囬拡銆傝鍙?SPAN lang=EN-US>(*fpp)++</SPAN>灝辨槸瀵瑰艦鍙傛寚閽堟寚鍚戠殑鎸囬拡榪涜鑷榪愮畻鐨勩備絾鏄洜涓?SPAN lang=EN-US>*</SPAN>榪愮畻絎﹂珮浜?SPAN lang=EN-US>++</SPAN>榪愮畻絎︼紝鎵浠ュ渾鎷彿鍦ㄨ繖閲屾槸蹇呴』鐨勶紝濡傛灉娌℃湁鍦嗘嫭鍙鳳紝閭d箞<SPAN lang=EN-US>++</SPAN>榪愮畻絎﹀皢浣滅敤浜庝簩閲嶆寚閽?SPAN lang=EN-US>fpp</SPAN>涓娿?SPAN lang=EN-US><BR><BR></SPAN>鍥涖佹寚鍚戞寚閽堟暟緇勭殑鎸囬拡<SPAN lang=EN-US><BR>    </SPAN>鎸囬拡鐨勬寚閽堝彟涓鐢ㄦ硶鏃у鐞嗘寚閽堟暟緇勩傛湁浜涚▼搴忓憳鍠滄鐢ㄦ寚閽堟暟緇勬潵浠f浛澶氱淮鏁扮粍錛屼竴涓父瑙佺殑鐢ㄦ硶灝辨槸澶勭悊瀛楃涓層?SPAN lang=EN-US><BR><BR>        char *Names[]=<BR>        {<BR>             "Bill",<BR>             "Sam",<BR>             "Jim",<BR>             "Paul",<BR>             "Charles",<BR>             0<BR>        };<BR><BR>        main()<BR>        {<BR>            char **nm=Names;<BR>            while(*nm!=0) printf("%s\n",*nm++);<BR>        }<BR><BR>    </SPAN>鍏堢敤瀛楃鍨嬫寚閽堟暟緇?SPAN lang=EN-US>Names</SPAN>鐨勫湴鍧鏉ュ垵濮嬪寲鎸囬拡<SPAN lang=EN-US>nm</SPAN>銆傛瘡嬈?SPAN lang=EN-US>printf()</SPAN>鐨勮皟鐢ㄩ兘棣栧厛浼犻掓寚閽?SPAN lang=EN-US>nm</SPAN>鎸囧悜鐨勫瓧絎﹀瀷鎸囬拡錛岀劧鍚庡<SPAN lang=EN-US>nm</SPAN>榪涜鑷榪愮畻浣垮叾鎸囧悜鏁扮粍鐨勪笅涓涓厓绱?SPAN lang=EN-US>(</SPAN>榪樻槸鎸囬拡<SPAN lang=EN-US>)</SPAN>銆傛敞鎰忓畬鎴愪笂榪拌涓虹殑璇硶涓?SPAN lang=EN-US>*nm++</SPAN>錛屽畠棣栧厛鍙栧緱鎸囬拡鎸囧悜鐨勫唴瀹癸紝鐒跺悗浣挎寚閽堣嚜澧炪?SPAN lang=EN-US><BR>    </SPAN>娉ㄦ剰鏁扮粍涓殑鏈鍚庝竴涓厓绱犺鍒濆鍖栦負<SPAN lang=EN-US>0</SPAN>錛?SPAN lang=EN-US>while</SPAN>寰幆浠ユ鏉ュ垽鏂槸鍚﹀埌浜嗘暟緇勬湯灝俱傚叿鏈夐浂鍊肩殑鎸囬拡甯稿父琚敤鍋氬驚鐜暟緇勭殑緇堟絎︺傜▼搴忓憳縐伴浂鍊兼寚閽堜負絀烘寚閽?SPAN lang=EN-US>(NULL)</SPAN>銆傞噰鐢ㄧ┖鎸囬拡浣滀負緇堟絎︼紝鍦ㄦ爲縐嶅鍒犲厓绱犳椂錛屽氨涓嶅繀鏀瑰姩閬嶅巻鏁扮粍鐨勪唬鐮侊紝鍥犱負姝ゆ椂鏁扮粍浠嶇劧浠ョ┖鎸囬拡浣滀負緇撴潫銆?/SPAN><img src ="http://m.shnenglu.com/ivenher/aggbug/915.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/ivenher/" target="_blank">鐖遍キ鐩?/a> 2005-11-03 11:26 <a href="http://m.shnenglu.com/ivenher/articles/915.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鏁扮粍鍜屾寚閽?/title><link>http://m.shnenglu.com/ivenher/articles/912.html</link><dc:creator>鐖遍キ鐩?/dc:creator><author>鐖遍キ鐩?/author><pubDate>Thu, 03 Nov 2005 02:06:00 GMT</pubDate><guid>http://m.shnenglu.com/ivenher/articles/912.html</guid><wfw:comment>http://m.shnenglu.com/ivenher/comments/912.html</wfw:comment><comments>http://m.shnenglu.com/ivenher/articles/912.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/ivenher/comments/commentRss/912.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/ivenher/services/trackbacks/912.html</trackback:ping><description><![CDATA[<SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">鎸囬拡鍜屾暟緇勬湁鐫瀵嗗垏鐨勫叧緋?SPAN lang=EN-US>,</SPAN>浠諱綍鑳界敱鏁扮粍涓嬫爣瀹屾垚鐨勬搷浣滀篃閮藉彲鐢ㄦ寚閽堟潵瀹炵幇<SPAN lang=EN-US>,</SPAN>浣嗙▼搴忎腑浣跨敤鎸囬拡鍙嬌浠g爜鏇寸揣鍑戙佹洿鐏墊椿銆?SPAN lang=EN-US><BR><BR></SPAN>涓銆佹寚鍚戞暟緇勫厓绱犵殑鎸囬拡<SPAN lang=EN-US><BR>    </SPAN>鎴戜滑瀹氫箟涓涓暣鍨嬫暟緇勫拰涓涓寚鍚戞暣鍨嬬殑鎸囬拡鍙橀噺<SPAN lang=EN-US>:<BR>        int a[10], *p; <BR>    </SPAN>鍜屽墠闈粙緇嶈繃鐨勬柟娉曠浉鍚?SPAN lang=EN-US>,</SPAN>鍙互浣挎暣鍨嬫寚閽?SPAN lang=EN-US>p</SPAN>鎸囧悜鏁扮粍涓換浣曚竴涓厓绱?SPAN lang=EN-US>,</SPAN>鍋囧畾緇欏嚭璧嬪艱繍綆?SPAN lang=EN-US><BR>        p=&a[0]; <BR>    </SPAN>姝ゆ椂<SPAN lang=EN-US>,p</SPAN>鎸囧悜鏁扮粍涓殑絎?SPAN lang=EN-US>0</SPAN>鍙峰厓绱?SPAN lang=EN-US>,</SPAN>鍗?SPAN lang=EN-US>a[0],</SPAN>鎸囬拡鍙橀噺<SPAN lang=EN-US>p</SPAN>涓寘鍚簡鏁扮粍鍏冪礌<SPAN lang=EN-US>a[0]</SPAN>鐨勫湴鍧<SPAN lang=EN-US>,</SPAN>鐢變簬鏁扮粍鍏冪礌鍦ㄥ唴瀛樹腑鏄繛緇瓨鏀劇殑<SPAN lang=EN-US>,</SPAN>鍥犳<SPAN lang=EN-US>,</SPAN>鎴戜滑灝卞彲浠ラ氳繃鎸囬拡鍙橀噺<SPAN lang=EN-US>p</SPAN>鍙婂叾鏈夊叧榪愮畻闂存帴璁塊棶鏁扮粍涓殑浠諱綍涓涓厓绱犮?SPAN lang=EN-US> <BR>    Turbo C</SPAN>涓?SPAN lang=EN-US>,</SPAN>鏁扮粍鍚嶆槸鏁扮粍鐨勭<SPAN lang=EN-US>0</SPAN>鍙峰厓绱犵殑鍦板潃<SPAN lang=EN-US>,</SPAN>鍥犳涓嬮潰涓や釜璇彞鏄瓑浠風殑<SPAN lang=EN-US><BR>        p=&a[0]; <BR>        p=a; <BR>    </SPAN>鏍規嵁鍦板潃榪愮畻瑙勫垯<SPAN lang=EN-US>,a+1</SPAN>涓?SPAN lang=EN-US>a[1]</SPAN>鐨勫湴鍧<SPAN lang=EN-US>,a+i</SPAN>灝變負<SPAN lang=EN-US>a[i]</SPAN>鐨勫湴鍧銆?SPAN lang=EN-US><BR>    </SPAN>涓嬮潰鎴戜滑鐢ㄦ寚閽堢粰鍑烘暟緇勫厓绱犵殑鍦板潃鍜屽唴瀹圭殑鍑犵琛ㄧず褰㈠紡錛?SPAN lang=EN-US><BR>        (1). p+i</SPAN>鍜?SPAN lang=EN-US>a+i</SPAN>鍧囪〃紺?SPAN lang=EN-US>a[i]</SPAN>鐨勫湴鍧<SPAN lang=EN-US>, </SPAN>鎴栬呰<SPAN lang=EN-US>,</SPAN>瀹冧滑鍧囨寚鍚戞暟緇勭<SPAN lang=EN-US>i</SPAN>鍙峰厓绱?SPAN lang=EN-US>, </SPAN>鍗蟲寚鍚?SPAN lang=EN-US>a[i]</SPAN>銆?SPAN lang=EN-US> <BR>        (2). *(p+i)</SPAN>鍜?SPAN lang=EN-US>*(a+i)</SPAN>閮借〃紺?SPAN lang=EN-US>p+i</SPAN>鍜?SPAN lang=EN-US>a+i</SPAN>鎵鎸囧璞$殑鍐呭<SPAN lang=EN-US>,</SPAN>鍗充負<SPAN lang=EN-US>a[i]</SPAN>銆?SPAN lang=EN-US> <BR>        (3). </SPAN>鎸囧悜鏁扮粍鍏冪礌鐨勬寚閽?SPAN lang=EN-US>, </SPAN>涔熷彲浠ヨ〃紺烘垚鏁扮粍鐨勫艦寮?SPAN lang=EN-US>,</SPAN>涔熷氨鏄<SPAN lang=EN-US>,</SPAN>瀹冨厑璁告寚閽堝彉閲忓甫涓嬫爣<SPAN lang=EN-US>, </SPAN>濡?SPAN lang=EN-US>p[i]</SPAN>涓?SPAN lang=EN-US>*(p+i)</SPAN>絳変環銆?SPAN lang=EN-US><BR>             </SPAN>鍋囪嫢<SPAN lang=EN-US>:        p=a+5; <BR>                 </SPAN>鍒?SPAN lang=EN-US>p[2]</SPAN>灝辯浉褰撲簬<SPAN lang=EN-US>*(p+2), </SPAN>鐢變簬<SPAN lang=EN-US>p</SPAN>鎸囧悜<SPAN lang=EN-US>a[5], </SPAN>鎵浠?SPAN lang=EN-US>p[2]</SPAN>灝辯浉褰撲簬<SPAN lang=EN-US>a[7]</SPAN>銆傝?SPAN lang=EN-US>p[-3]</SPAN>灝辯浉褰撲簬<SPAN lang=EN-US>*(p-3), </SPAN>瀹冭〃紺?SPAN lang=EN-US>a[2]</SPAN>銆?SPAN lang=EN-US><BR><BR></SPAN>浜屻佹寚鍚戜簩緇存暟緇勭殑鎸囬拡<SPAN lang=EN-US> <BR>    1.</SPAN>浜岀淮鏁扮粍鍏冪礌鐨勫湴鍧<SPAN lang=EN-US> <BR>        </SPAN>涓轟簡璇存槑闂<SPAN lang=EN-US>, </SPAN>鎴戜滑瀹氫箟浠ヤ笅浜岀淮鏁扮粍<SPAN lang=EN-US>:<BR>            int a[3][4]={{0,1,2,3}, {4,5,6,7}, {8,9,10,11}}; <BR>                a</SPAN>涓轟簩緇存暟緇勫悕<SPAN lang=EN-US>,</SPAN>姝ゆ暟緇勬湁<SPAN lang=EN-US>3</SPAN>琛?SPAN lang=EN-US>4</SPAN>鍒?SPAN lang=EN-US>, </SPAN>鍏?SPAN lang=EN-US>12</SPAN>涓厓绱犮備絾涔熷彲榪欐牱鏉ョ悊瑙?SPAN lang=EN-US>,</SPAN>鏁扮粍<SPAN lang=EN-US>a</SPAN>鐢變笁涓厓绱犵粍鎴?SPAN lang=EN-US>:a[0],a[1],a[2]</SPAN>銆傝屾瘡涓厓绱犲張鏄竴涓竴緇存暟緇?SPAN lang=EN-US>, </SPAN>涓旈兘鍚湁<SPAN lang=EN-US>4</SPAN>涓厓绱?SPAN lang=EN-US>(</SPAN>鐩稿綋浜?SPAN lang=EN-US>4</SPAN>鍒?SPAN lang=EN-US>),</SPAN>渚嬪<SPAN lang=EN-US>,a[0]</SPAN>鎵浠h〃鐨勪竴緇存暟緇勬墍鍖呭惈鐨?SPAN lang=EN-US> 4 </SPAN>涓厓绱犱負<SPAN lang=EN-US>a[0][0], a[0][1], a[0][2], a[0][3]</SPAN>銆傚鍥炬墍紺?SPAN lang=EN-US>: <BR>                     ______        _______________<BR>                a---| a[0] | ____ | 0 | 1 | 2 | 3 |<BR>                    |______|      |___|___|___|___|<BR>                    | a[1] | ____ | 4 | 5 | 6 | 7 |<BR>                    |______|      |___|___|___|___|<BR>                    | a[2] | ____ | 8 | 9 | 10| 11|<BR>                    |______|      |___|___|___|___|<BR><BR>        <BR>        </SPAN>浣嗕粠浜岀淮鏁扮粍鐨勮搴︽潵鐪?SPAN lang=EN-US>,a</SPAN>浠h〃浜岀淮鏁扮粍鐨勯鍦板潃<SPAN lang=EN-US>,</SPAN>褰撶劧涔熷彲鐪嬫垚鏄簩緇存暟緇勭<SPAN lang=EN-US>0</SPAN>琛岀殑棣栧湴鍧銆?SPAN lang=EN-US>a+1</SPAN>灝變唬琛ㄧ<SPAN lang=EN-US>1</SPAN>琛岀殑棣栧湴鍧<SPAN lang=EN-US>,a+2</SPAN>灝變唬琛ㄧ<SPAN lang=EN-US>2</SPAN>琛岀殑棣栧湴鍧銆傚鏋滄浜岀淮鏁扮粍鐨勯鍦板潃涓?SPAN lang=EN-US>1000,</SPAN>鐢變簬絎?SPAN lang=EN-US>0</SPAN>琛屾湁<SPAN lang=EN-US>4</SPAN>涓暣鍨嬪厓绱?SPAN lang=EN-US>,</SPAN>鎵浠?SPAN lang=EN-US>a+1</SPAN>涓?SPAN lang=EN-US>1008,a+2</SPAN>涔熷氨涓?SPAN lang=EN-US>1016</SPAN>銆傚鍥炬墍紺?SPAN lang=EN-US><BR>                                   _______________<BR>                      (1000) ____ | 0 | 1 | 2 | 3 |<BR>                                  |___|___|___|___|<BR>                      (1008) ____ | 4 | 5 | 6 | 7 |<BR>                                  |___|___|___|___|<BR>                      (1016) ____ | 8 | 9 | 10| 11|<BR>                                  |___|___|___|___|<BR><BR>        </SPAN>鏃㈢劧鎴戜滑鎶?SPAN lang=EN-US>a[0],a[1],a[2]</SPAN>鐪嬫垚鏄竴緇存暟緇勫悕<SPAN lang=EN-US>,</SPAN>鍙互璁や負瀹冧滑鍒嗗埆浠h〃瀹冧滑鎵瀵瑰簲鐨勬暟緇勭殑棣栧湴鍧<SPAN lang=EN-US>,</SPAN>涔熷氨鏄<SPAN lang=EN-US>,a[0]</SPAN>浠h〃絎?SPAN lang=EN-US> 0 </SPAN>琛屼腑絎?SPAN lang=EN-US> 0 </SPAN>鍒楀厓绱犵殑鍦板潃<SPAN lang=EN-US>,</SPAN>鍗?SPAN lang=EN-US>&a[0][0], a[1]</SPAN>鏄<SPAN lang=EN-US>1</SPAN>琛屼腑絎?SPAN lang=EN-US>0</SPAN>鍒楀厓绱犵殑鍦板潃<SPAN lang=EN-US>,</SPAN>鍗?SPAN lang=EN-US>&a[1][0],</SPAN>鏍規嵁鍦板潃榪愮畻瑙勫垯<SPAN lang=EN-US>,a[0]+1</SPAN>鍗充唬琛ㄧ<SPAN lang=EN-US>0</SPAN>琛岀<SPAN lang=EN-US>1</SPAN>鍒楀厓绱犵殑鍦板潃<SPAN lang=EN-US>,</SPAN>鍗?SPAN lang=EN-US>&a[0][1],</SPAN>涓鑸岃█<SPAN lang=EN-US>,a[i]+j</SPAN>鍗充唬琛ㄧ<SPAN lang=EN-US>i</SPAN>琛岀<SPAN lang=EN-US>j</SPAN>鍒楀厓绱犵殑鍦板潃<SPAN lang=EN-US>, </SPAN>鍗?SPAN lang=EN-US>&a[i][j]</SPAN>銆?SPAN lang=EN-US><BR>        </SPAN>鍙﹀<SPAN lang=EN-US>,</SPAN>鍦ㄤ簩緇存暟緇勪腑<SPAN lang=EN-US>,</SPAN>鎴戜滑榪樺彲鐢ㄦ寚閽堢殑褰㈠紡鏉ヨ〃紺哄悇鍏冪礌鐨勫湴鍧銆傚鍓嶆墍榪?SPAN lang=EN-US>,a[0]</SPAN>涓?SPAN lang=EN-US>*(a+0)</SPAN>絳変環<SPAN lang=EN-US>,a[1]</SPAN>涓?SPAN lang=EN-US>*(a+1)</SPAN>絳変環<SPAN lang=EN-US>,</SPAN>鍥犳<SPAN lang=EN-US>a[i]+j</SPAN>灝變笌<SPAN lang=EN-US>*(a+i)+j</SPAN>絳変環<SPAN lang=EN-US>,</SPAN>瀹冭〃紺烘暟緇勫厓绱?SPAN lang=EN-US>a[i][j]</SPAN>鐨勫湴鍧銆?SPAN lang=EN-US><BR>        </SPAN>鍥犳<SPAN lang=EN-US>,</SPAN>浜岀淮鏁扮粍鍏冪礌<SPAN lang=EN-US>a[i][j]</SPAN>鍙〃紺烘垚<SPAN lang=EN-US>*(a[i]+j)</SPAN>鎴?SPAN lang=EN-US>*(*(a+i)+j),</SPAN>瀹冧滑閮戒笌<SPAN lang=EN-US>a[i][j]</SPAN>絳変環<SPAN lang=EN-US>,</SPAN>鎴栬呰繕鍙啓鎴?SPAN lang=EN-US>(*(a+i))[j]</SPAN>銆?SPAN lang=EN-US> <BR><BR>        </SPAN>鍙﹀<SPAN lang=EN-US>, </SPAN>瑕佽ˉ鍏呰鏄庝竴涓?SPAN lang=EN-US>, </SPAN>鏋滀綘緙栧啓涓涓▼搴忚緭鍑烘墦鍗?SPAN lang=EN-US>a</SPAN>鍜?SPAN lang=EN-US>*a,</SPAN>浣犲彲鍙戠幇瀹冧滑鐨勫兼槸鐩稿悓鐨?SPAN lang=EN-US>,</SPAN>榪欐槸涓轟粈涔堝憿<SPAN lang=EN-US>? </SPAN>鎴戜滑鍙繖鏍鋒潵鐞嗚В<SPAN lang=EN-US>: <BR>            </SPAN>棣栧厛<SPAN lang=EN-US>,</SPAN>涓轟簡璇存槑闂<SPAN lang=EN-US>,</SPAN>鎴戜滑鎶婁簩緇存暟緇勪漢涓哄湴鐪嬫垚鐢變笁涓暟緇勫厓绱?SPAN lang=EN-US>a[0],a[1],a[2]</SPAN>緇勬垚<SPAN lang=EN-US>,</SPAN>灝?SPAN lang=EN-US>a[0],a[1],a[2]</SPAN>鐪嬫垚鏄暟緇勫悕瀹冧滑鍙堝垎鍒槸鐢?SPAN lang=EN-US>4</SPAN>涓厓绱犵粍鎴愮殑涓緇存暟緇勩傚洜姝?SPAN lang=EN-US>,a</SPAN>琛ㄧず鏁扮粍絎?SPAN lang=EN-US>0</SPAN>琛岀殑鍦板潃<SPAN lang=EN-US>, </SPAN>鑰?SPAN lang=EN-US>*a</SPAN>鍗充負<SPAN lang=EN-US>a[0], </SPAN>瀹冩槸鏁扮粍鍚?SPAN lang=EN-US>, </SPAN>褰撶劧榪樻槸鍦板潃<SPAN lang=EN-US>,</SPAN>瀹冨氨鏄暟緇勭<SPAN lang=EN-US>0 </SPAN>琛岀<SPAN lang=EN-US>0 </SPAN>鍒楀厓绱犵殑鍦板潃銆?SPAN lang=EN-US><BR>    2.</SPAN>鎸囧悜涓涓敱<SPAN lang=EN-US>n</SPAN>涓厓绱犳墍緇勬垚鐨勬暟緇勬寚閽?SPAN lang=EN-US><BR>        </SPAN>鍦?SPAN lang=EN-US>Turbo C</SPAN>涓?SPAN lang=EN-US>, </SPAN>鍙畾涔夊涓嬬殑鎸囬拡鍙橀噺<SPAN lang=EN-US>: <BR>            int (*p)[3]; <BR>        </SPAN>鎸囬拡<SPAN lang=EN-US>p</SPAN>涓烘寚鍚戜竴涓敱<SPAN lang=EN-US>3</SPAN>涓厓绱犳墍緇勬垚鐨勬暣鍨嬫暟緇勬寚閽堛傚湪瀹氫箟涓?SPAN lang=EN-US>,</SPAN>鍦嗘嫭鍙鋒槸涓嶈兘灝戠殑<SPAN lang=EN-US>, </SPAN>鍚﹀垯瀹冩槸鎸囬拡鏁扮粍<SPAN lang=EN-US>, </SPAN>榪欏皢鍦ㄥ悗闈粙緇嶃傝繖縐嶆暟緇勭殑鎸囬拡涓嶅悓浜庡墠闈粙緇嶇殑鏁村瀷鎸囬拡<SPAN lang=EN-US>,</SPAN>褰撴暣鍨嬫寚閽堟寚鍚戜竴涓暣鍨嬫暟緇勭殑鍏冪礌鏃?SPAN lang=EN-US>,</SPAN>榪涜鎸囬拡<SPAN lang=EN-US>(</SPAN>鍦板潃<SPAN lang=EN-US>)</SPAN>鍔?SPAN lang=EN-US>1</SPAN>榪愮畻<SPAN lang=EN-US>,</SPAN>琛ㄧず鎸囧悜鏁扮粍鐨勪笅涓涓厓绱?SPAN lang=EN-US>,</SPAN>姝ゆ椂鍦板潃鍊煎鍔犱簡<SPAN lang=EN-US>2(</SPAN>鍥犱負鏀懼ぇ鍥犲瓙涓?SPAN lang=EN-US>2),</SPAN>鑰屽涓婃墍瀹氫箟鐨勬寚鍚戜竴涓敱<SPAN lang=EN-US>3</SPAN>涓厓绱犵粍鎴愮殑鏁扮粍鎸囬拡<SPAN lang=EN-US>,</SPAN>榪涜鍦板潃鍔?SPAN lang=EN-US>1</SPAN>榪愮畻鏃?SPAN lang=EN-US>,</SPAN>鍏跺湴鍧鍊煎鍔犱簡<SPAN lang=EN-US>6(</SPAN>鏀懼ぇ鍥犲瓙涓?SPAN lang=EN-US>2x3=6), <BR>        </SPAN>榪欑鏁扮粍鎸囬拡鍦?SPAN lang=EN-US>Turbo C</SPAN>涓敤寰楄緝灝?SPAN lang=EN-US>,</SPAN>浣嗗湪澶勭悊浜岀淮鏁扮粍鏃?SPAN lang=EN-US>, </SPAN>榪樻槸寰堟柟渚跨殑銆備緥濡?SPAN lang=EN-US>: <BR>            int a[3][4], (*p)[4]; <BR>            p=a; <BR>        </SPAN>寮濮嬫椂<SPAN lang=EN-US>p</SPAN>鎸囧悜浜岀淮鏁扮粍絎?SPAN lang=EN-US>0</SPAN>琛?SPAN lang=EN-US>,</SPAN>褰撹繘琛?SPAN lang=EN-US>p+1</SPAN>榪愮畻鏃?SPAN lang=EN-US>,</SPAN>鏍規嵁鍦板潃榪愮畻瑙勫垯<SPAN lang=EN-US>,</SPAN>姝ゆ椂鏀懼ぇ鍥犲瓙涓?SPAN lang=EN-US>4x2=8,</SPAN>鎵浠ユ鏃舵濂芥寚鍚戜簩緇存暟緇勭殑絎?SPAN lang=EN-US>1</SPAN>琛屻傚拰浜岀淮鏁扮粍鍏冪礌鍦板潃璁$畻鐨勮鍒欎竴鏍?SPAN lang=EN-US>,*p+1</SPAN>鎸囧悜<SPAN lang=EN-US>a[0][1],*(p+i)+j</SPAN>鍒欐寚鍚戞暟緇勫厓绱?SPAN lang=EN-US>a[i][j]</SPAN>銆?SPAN lang=EN-US> <BR>        </SPAN>渚嬶細<SPAN lang=EN-US><BR>            int a[3][4]={ <BR>                          {1,3,5,7}, <BR>                          {9,11,13,15}, <BR>                          {17,19,21,23}<BR>                        }; <BR><BR>            main() <BR>            { <BR>                int i,(*b)[4]; <BR>                b=a+1;     /* b</SPAN>鎸囧悜浜岀淮鏁扮粍鐨勭<SPAN lang=EN-US>1</SPAN>琛?SPAN lang=EN-US>, </SPAN>姝ゆ椂<SPAN lang=EN-US>*b[0]</SPAN>鏄?SPAN lang=EN-US>a[1][0] */ <BR>                for(i=1;i<=4;b=b[0]+2,i++)   /* </SPAN>淇敼<SPAN lang=EN-US>b</SPAN>鐨勬寚鍚?SPAN lang=EN-US>, </SPAN>姣忔澧炲姞<SPAN lang=EN-US>2 */ <BR>                printf("%d\t",*b[0]); <BR>                printf("\n"); <BR>                for(i=0; i<3; i++)<BR>                { <BR>                    b=a+i;       /* </SPAN>淇敼<SPAN lang=EN-US>b</SPAN>鐨勬寚鍚?SPAN lang=EN-US>,</SPAN>姣忔璺寵繃浜岀淮鏁扮粍鐨勪竴琛?SPAN lang=EN-US> */ <BR>                    printf("%d\t",*(b[i]+1)); <BR>                } <BR>                    printf ("\n"); <BR>            }<BR>            </SPAN>紼嬪簭榪愯緇撴灉濡備笅<SPAN lang=EN-US>: <BR>                 9    13   17   21 <BR>                 3    11   19 <BR><BR></SPAN>涓夈佸瓧絎︽寚閽?SPAN lang=EN-US> <BR>    </SPAN>鎴戜滑宸茬粡鐭ラ亾<SPAN lang=EN-US>,</SPAN>瀛楃涓插父閲忔槸鐢卞弻寮曞彿鎷搗鏉ョ殑瀛楃搴忓垪<SPAN lang=EN-US>,</SPAN>渚嬪<SPAN lang=EN-US>: <BR>        "a string" <BR>    </SPAN>灝辨槸涓涓瓧絎︿覆甯擱噺<SPAN lang=EN-US>,</SPAN>璇ュ瓧絎︿覆涓洜涓哄瓧絎?SPAN lang=EN-US>a</SPAN>鍚庨潰榪樻湁涓涓┖鏍煎瓧絎?SPAN lang=EN-US>,</SPAN>鎵浠ュ畠鐢?SPAN lang=EN-US>8</SPAN>涓瓧絎﹀簭鍒楃粍鎴愩傚湪紼嬪簭涓鍑虹幇瀛楃涓插父閲?SPAN lang=EN-US>C</SPAN>緙栬瘧紼嬪簭灝辯粰瀛楃涓插父閲忔寜鎺掍竴瀛樿串鍖哄煙<SPAN lang=EN-US>,</SPAN>榪欎釜鍖哄煙鏄潤鎬佺殑<SPAN lang=EN-US>,</SPAN>鍦ㄦ暣涓▼搴忚繍琛岀殑榪囩▼涓緇堝崰鐢?SPAN lang=EN-US>, </SPAN>騫蟲椂鎵璁茬殑瀛楃涓插父閲忕殑闀垮害鏄寚璇ュ瓧絎︿覆鐨勫瓧絎︿釜鏁?SPAN lang=EN-US>, </SPAN>浣嗗湪鎸夋帓瀛樿串鍖哄煙鏃?SPAN lang=EN-US>, C </SPAN>緙栬瘧紼嬪簭榪樿嚜鍔ㄧ粰璇ュ瓧絎︿覆搴忓垪鐨勬湯灝懼姞涓婁竴涓┖瀛楃<SPAN lang=EN-US>'\0',</SPAN>鐢ㄦ潵鏍囧織瀛楃涓茬殑緇撴潫<SPAN lang=EN-US>,</SPAN>鍥犳涓涓瓧絎︿覆甯擱噺鎵鍗犵殑瀛樿串鍖哄煙鐨勫瓧鑺傛暟鎬繪瘮瀹冪殑瀛楃涓暟澶氫竴涓瓧鑺傘?SPAN lang=EN-US><BR>    Turbo C</SPAN>涓搷浣滀竴涓瓧絎︿覆甯擱噺鐨勬柟娉曟湁<SPAN lang=EN-US>: <BR>    (1).</SPAN>鎶婂瓧絎︿覆甯擱噺瀛樻斁鍦ㄤ竴涓瓧絎︽暟緇勪箣涓?SPAN lang=EN-US>, </SPAN>渚嬪<SPAN lang=EN-US>:<BR>            char s[]="a string"; <BR>        </SPAN>鏁扮粍<SPAN lang=EN-US>s</SPAN>鍏辨湁<SPAN lang=EN-US>9</SPAN>涓厓绱犳墍緇勬垚<SPAN lang=EN-US>,</SPAN>鍏朵腑<SPAN lang=EN-US>s[8]</SPAN>涓殑鍐呭鏄?SPAN lang=EN-US>'\0'</SPAN>銆傚疄闄呬笂<SPAN lang=EN-US>,</SPAN>鍦ㄥ瓧絎︽暟緇勫畾涔夌殑榪囩▼涓?SPAN lang=EN-US>,</SPAN>緙栬瘧紼嬪簭鐩存帴鎶婂瓧絎︿覆澶嶅啓鍒版暟緇勪腑<SPAN lang=EN-US>,</SPAN>鍗沖鏁扮粍<SPAN lang=EN-US>s</SPAN>鍒濆鍖栥?SPAN lang=EN-US><BR>    (2).</SPAN>鐢ㄥ瓧絎︽寚閽堟寚鍚戝瓧絎︿覆<SPAN lang=EN-US>,</SPAN>鐒跺悗閫氳繃瀛楃鎸囬拡鏉ヨ闂瓧絎︿覆瀛樿串鍖哄煙銆傚綋瀛楃涓插父閲忓湪琛ㄨ揪寮忎腑鍑虹幇鏃?SPAN lang=EN-US>, <BR>        </SPAN>鏍規嵁鏁扮粍鐨勭被鍨嬭漿鎹㈣鍒?SPAN lang=EN-US>,</SPAN>瀹冭杞崲鎴愬瓧絎︽寚閽堛傚洜姝?SPAN lang=EN-US>,</SPAN>鑻ユ垜浠畾涔変簡涓瀛楃鎸囬拡<SPAN lang=EN-US>cp: <BR>            char *cp; <BR>        </SPAN>浜庢槸鍙敤<SPAN lang=EN-US>: <BR>            cp="a string"; <BR>        </SPAN>浣?SPAN lang=EN-US>cp</SPAN>鎸囧悜瀛楃涓插父閲忎腑鐨勭<SPAN lang=EN-US>0</SPAN>鍙峰瓧絎?SPAN lang=EN-US>a, </SPAN>濡傚浘鎵紺恒?SPAN lang=EN-US> <BR>                      <BR>                            ___________________________________<BR>                CP -----   | a |   | s | t | r | i | n | g | \0| <BR>                           |___|___|___|___|___|___|___|___|___| <BR>                                          <BR>        </SPAN>浠ュ悗鎴戜滑鍙氳繃<SPAN lang=EN-US>cp</SPAN>鏉ヨ闂繖涓瀛樿串鍖哄煙<SPAN lang=EN-US>, </SPAN>濡?SPAN lang=EN-US>*cp</SPAN>鎴?SPAN lang=EN-US>cp[0]</SPAN>灝辨槸瀛楃<SPAN lang=EN-US>a,</SPAN>鑰?SPAN lang=EN-US>cp[i]</SPAN>鎴?SPAN lang=EN-US>*(cp+i)</SPAN>灝辯浉褰撲簬瀛楃涓茬殑絎?SPAN lang=EN-US>i</SPAN>鍙峰瓧絎?SPAN lang=EN-US>,</SPAN>浣嗕紒鍥鵑氳繃鎸囬拡鏉ヤ慨鏀瑰瓧絎︿覆甯擱噺鐨勮涓烘槸娌℃湁鎰忎箟鐨勩?SPAN lang=EN-US> <BR><BR></SPAN>鍥涖佹寚閽堟暟緇?SPAN lang=EN-US> <BR>    </SPAN>鍥犱負鎸囬拡鏄彉閲?SPAN lang=EN-US>,</SPAN>鍥犳鍙鎯崇敤鎸囧悜鍚屼竴鏁版嵁綾誨瀷鐨勬寚閽堟潵鏋勬垚涓涓暟緇?SPAN lang=EN-US>, </SPAN>榪欏氨鏄寚閽堟暟緇勩傛暟緇勪腑鐨勬瘡涓厓绱犻兘鏄寚閽堝彉閲?SPAN lang=EN-US>,</SPAN>鏍規嵁鏁扮粍鐨勫畾涔?SPAN lang=EN-US>,</SPAN>鎸囬拡鏁扮粍涓瘡涓厓绱犻兘涓烘寚鍚戝悓涓鏁版嵁綾誨瀷鐨勬寚閽堛傛寚閽堟暟緇勭殑瀹氫箟鏍煎紡涓?SPAN lang=EN-US>: <BR>         </SPAN>綾誨瀷鏍囪瘑<SPAN lang=EN-US> *</SPAN>鏁扮粍鍚?SPAN lang=EN-US>[</SPAN>鏁村瀷甯擱噺琛ㄨ揪寮?SPAN lang=EN-US>]; <BR>    </SPAN>渚嬪<SPAN lang=EN-US>: <BR>         int *a[10]; <BR>    </SPAN>瀹氫箟浜嗕竴涓寚閽堟暟緇?SPAN lang=EN-US>,</SPAN>鏁扮粍涓殑姣忎釜鍏冪礌閮芥槸鎸囧悜鏁村瀷閲忕殑鎸囬拡<SPAN lang=EN-US>,</SPAN>璇ユ暟緇勭敱<SPAN lang=EN-US>10</SPAN>涓厓绱犵粍鎴?SPAN lang=EN-US>,</SPAN>鍗?SPAN lang=EN-US>a[0],a[1],a[2], ..., a[9],</SPAN>瀹冧滑鍧囦負鎸囬拡鍙橀噺銆?SPAN lang=EN-US>a</SPAN>涓鴻鎸囬拡鏁扮粍鍚?SPAN lang=EN-US>,</SPAN>鍜屾暟緇勪竴鏍鳳紝<SPAN lang=EN-US>a</SPAN>鏄父閲?SPAN lang=EN-US>,</SPAN>涓嶈兘瀵瑰畠榪涜澧為噺榪愮畻銆?SPAN lang=EN-US>a</SPAN>涓烘寚閽堟暟緇勫厓绱?SPAN lang=EN-US>a[0]</SPAN>鐨勫湴鍧<SPAN lang=EN-US>,a+i</SPAN>涓?SPAN lang=EN-US>a[i]</SPAN>鐨勫湴鍧<SPAN lang=EN-US>,*a</SPAN>灝辨槸<SPAN lang=EN-US>a[0],*(a+i)</SPAN>灝辨槸<SPAN lang=EN-US>a[i]</SPAN>銆?SPAN lang=EN-US><BR>    </SPAN>涓轟粈涔堣瀹氫箟鍜屼嬌鐢ㄦ寚閽堟暟緇勫憿<SPAN lang=EN-US>?</SPAN>涓昏鏄敱浜庢寚閽堟暟緇勫澶勭悊瀛楃涓叉彁渚涗簡鏇村ぇ鐨勬柟渚垮拰鐏墊椿<SPAN lang=EN-US>,</SPAN>浣跨敤浜岀淮鏁扮粍瀵瑰鐞嗛暱搴︿笉絳夌殑姝f枃鏁堢巼浣庯紝鑰屾寚閽堟暟緇勭敱浜庡叾涓瘡涓厓绱犻兘涓烘寚閽堝彉閲?SPAN lang=EN-US>,</SPAN>鍥犳閫氳繃鍦板潃榪愮畻鏉ユ搷浣滄鏂囪鏄崄鍒嗘柟渚跨殑銆?SPAN lang=EN-US><BR>    </SPAN>鎸囬拡鏁扮粍鍜屼竴鑸暟緇勪竴鏍?SPAN lang=EN-US>,</SPAN>鍏佽鎸囬拡鏁扮粍鍦ㄥ畾涔夋椂鍒濆鍖栵紝浣嗙敱浜庢寚閽堟暟緇勭殑姣忎釜鍏冪礌鏄寚閽堝彉閲?SPAN lang=EN-US>,</SPAN>瀹冨彧鑳藉瓨鏀懼湴鍧<SPAN lang=EN-US>,</SPAN>鎵浠ュ鎸囧悜瀛楃涓茬殑鎸囬拡鏁扮粍鍦ㄨ鏄庤祴鍒濆兼椂<SPAN lang=EN-US>,</SPAN>鏄妸瀛樻斁瀛楃涓茬殑棣栧湴鍧璧嬬粰鎸囬拡鏁扮粍鐨勫搴斿厓绱?SPAN lang=EN-US>, <BR>    </SPAN>渚嬪涓嬮潰鏄竴涓功鍐欏嚱鏁?SPAN lang=EN-US>month_name(n),</SPAN>鍑芥暟榪斿洖涓涓寚鍚戝寘鍚<SPAN lang=EN-US>n</SPAN>鏈堝悕瀛楃殑瀛楃鎸囬拡<SPAN lang=EN-US>(</SPAN>鍏充簬鍑芥暟鎸囬拡鍜屾寚閽堝嚱鏁?SPAN lang=EN-US>,</SPAN>涓嬩竴鑺傚皢涓撻棬浠嬬粛<SPAN lang=EN-US>)</SPAN>銆?SPAN lang=EN-US> <BR>              <BR>    </SPAN>渚?SPAN lang=EN-US>: </SPAN>鎵撳嵃<SPAN lang=EN-US>1</SPAN>鏈堣嚦<SPAN lang=EN-US>12</SPAN>鏈堢殑鏈堝悕<SPAN lang=EN-US>: <BR>        char *month_name(int n) <BR>        { <BR>             static char *name[]={ <BR>                                    "Illegal month", <BR>                                    "January", <BR>                                    "February", <BR>                                    "March", <BR>                                    "April", <BR>                                    "May", <BR>                                    "June", <BR>                                    "July", <BR>                                    "August", <BR>                                    "September", <BR>                                    "October", <BR>                                    "November", <BR>                                    "December" <BR>                                 }; <BR>             return((n<1||n>12)?name[0]:name[n]); <BR>        } <BR><BR>        main() <BR>        { <BR>            int i; <BR>            for(i=0; i<13; i++) <BR>                printf("%s\n", month_name(i)); <BR>        }<BR style="mso-special-character: line-break"><BR style="mso-special-character: line-break"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">瀵逛簬鎸囬拡榪欎竴鑺傦紝涓瀹氳澶氱粌涔犱竴浜涢銆傛寚閽堟槸涓涓緢閲嶈鐨勬蹇碉紝蹇呴』澶氭帴瑙﹀疄闄呯殑闂鎵嶈兘鎺屾彙瀹冦?/SPAN></SPAN></SPAN><img src ="http://m.shnenglu.com/ivenher/aggbug/912.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/ivenher/" target="_blank">鐖遍キ鐩?/a> 2005-11-03 10:06 <a href="http://m.shnenglu.com/ivenher/articles/912.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鎬庝箞鍒ゆ柇_variant_t鐨勫兼槸浠涔堢被鍨?/title><link>http://m.shnenglu.com/ivenher/articles/775.html</link><dc:creator>鐖遍キ鐩?/dc:creator><author>鐖遍キ鐩?/author><pubDate>Fri, 21 Oct 2005 06:42:00 GMT</pubDate><guid>http://m.shnenglu.com/ivenher/articles/775.html</guid><wfw:comment>http://m.shnenglu.com/ivenher/comments/775.html</wfw:comment><comments>http://m.shnenglu.com/ivenher/articles/775.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/ivenher/comments/commentRss/775.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/ivenher/services/trackbacks/775.html</trackback:ping><description><![CDATA[/*<BR>灝?_variant_t 綾誨瀷鐨勫彉閲忥紝杞崲鎴愬瓧絎︿覆錛堟瘮濡傚鏋滄槸鏁板瓧錛屽垯杞崲鎴愭暟瀛楀搴旂殑瀛楃涓?錛氬 10.2 -> "10.200000"錛?BR><BR>*/<BR><BR>_variant_t var;  <BR><BR>CString str; //杞崲浠ュ悗鐨勫瓧絎︿覆<BR><BR><BR><BR>//浠ヤ笅浠g爜婕旂ず濡備綍杞崲涓篊鏍囧噯瀛楃涓插瀷<BR>if (var.vt == VT_I4)<BR>{<BR>    long lNum;<BR>    char szCh[21];<BR>    str=var.bstrVal;<BR>    WideCharToMultiByte <BR>             (CP_ACP, 0, var.bstrVal, -1,<BR>              szCh, sizeof(szCh), NULL, NULL);<BR>}<BR><BR>//浠ヤ笅浠g爜婕旂ず濡備綍杞崲鎴愰昏緫鍨?BR>if( var.vt == VT_BOOL)<BR>{<BR>    BOOL bVar;<BR>    lNum=var.lVal;<BR>    bVar= var.boolVar==0? FALSE : TRUE;<BR>}<BR><BR>//浠ヤ笅浠g爜婕旂ず涓哄叾浣欑被鍨嬶紙琛ュ厖錛?BR>switch(var.vt)<BR>{<BR><BR> case VT_BSTR:         //var is BSTR type<BR>     str=var.bstrVal;<BR>     break;<BR><BR> case VT_I2:           //var is short int type <BR>     str.Format("%d",(int)var.iVal);<BR>     break;<BR><BR> case VT_I4:          //var is long int type<BR>     str.Format("%d",var.lVal);<BR>     break;<BR><BR> case VT_R4:         //var is float type<BR>     str.Format("%10.6f",(double)var.fltVal);<BR>     break;<BR><BR> case VT_R8:         //var is double type<BR>     str.Format("%10.6f",var.dblVal);<BR>     break;<BR><BR> case VT_CY:        //var is CY type<BR>     str=COleCurrency(var).Format();<BR>     break;<BR><BR> case VT_DATE:     //var is DATE type<BR>     str=COleDateTime(var).Format();<BR>     break;<BR><BR> case VT_BOOL:     //var is  VARIANT_BOOL<BR>     str= (var.boolVal==0) ?"FALSE": "TRUE";<BR>     break;<BR><BR> default:<BR>     str.Format("Unk type %d\n",var.vt);<BR>     TRACE("Unknown type %d\n",var.vt);<BR>}<BR><img src ="http://m.shnenglu.com/ivenher/aggbug/775.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/ivenher/" target="_blank">鐖遍キ鐩?/a> 2005-10-21 14:42 <a href="http://m.shnenglu.com/ivenher/articles/775.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>C++瀛楃涓插畬鍏ㄦ寚寮曚箣涓 鈥斺?Win32 瀛楃緙栫爜錛堣漿錛?/title><link>http://m.shnenglu.com/ivenher/articles/773.html</link><dc:creator>鐖遍キ鐩?/dc:creator><author>鐖遍キ鐩?/author><pubDate>Fri, 21 Oct 2005 06:27:00 GMT</pubDate><guid>http://m.shnenglu.com/ivenher/articles/773.html</guid><wfw:comment>http://m.shnenglu.com/ivenher/comments/773.html</wfw:comment><comments>http://m.shnenglu.com/ivenher/articles/773.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/ivenher/comments/commentRss/773.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/ivenher/services/trackbacks/773.html</trackback:ping><description><![CDATA[<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD> <P align=center><B>C++瀛楃涓插畬鍏ㄦ寚寮曚箣涓 鈥斺?Win32 瀛楃緙栫爜<BR><BR></B><BR>鍘熻憲錛歁ichael Dunn<BR><BR>緲昏瘧錛?A href="mailto:cjsun@insun.hit.edu.cn"><FONT color=#4a664d>Chengjie Sun</FONT></A></P> <P><BR><BR>鍘熸枃鍑哄錛?FONT color=#4a664d size=2><A target=_blank>CodeProject錛歍he Complete Guide to C++ Strings, Part I</A></FONT><BR><BR><FONT color=#4a664d><IMG alt="" src="http://www.vckbase.com/document/image/paragraph.gif"></FONT> <B>寮曡█</B><BR><BR>銆銆姣棤鐤戦棶錛屾垜浠兘鐪嬪埌榪囧儚 TCHAR, std::string, BSTR 絳夊悇縐嶅悇鏍風殑瀛楃涓茬被鍨嬶紝榪樻湁閭d簺浠?_tcs 寮澶寸殑濂囨殑瀹忋備綘涔熻姝e湪鐩潃鏄劇ず鍣ㄥ彂鎰併傛湰鎸囧紩灝嗘葷粨寮曡繘鍚勭瀛楃綾誨瀷鐨勭洰鐨勶紝灞曠ず涓浜涚畝鍗曠殑鐢ㄦ硶錛屽茍鍛婅瘔鎮ㄥ湪蹇呰鏃訛紝濡備綍瀹炵幇鍚勭瀛楃涓茬被鍨嬩箣闂寸殑杞崲銆?BR>銆銆鍦ㄧ涓閮ㄥ垎錛屾垜浠皢浠嬬粛3縐嶅瓧絎︾紪鐮佺被鍨嬨備簡瑙e悇縐嶇紪鐮佹ā寮忕殑宸ヤ綔鏂瑰紡鏄緢閲嶈鐨勪簨鎯呫傚嵆浣夸綘宸茬粡鐭ラ亾涓涓瓧絎︿覆鏄竴涓瓧絎︽暟緇勶紝浣犱篃搴旇闃呰鏈儴鍒嗐備竴鏃︿綘浜嗚В浜嗚繖浜涳紝浣犲皢瀵瑰悇縐嶅瓧絎︿覆綾誨瀷涔嬮棿鐨勫叧緋繪湁涓涓竻妤氬湴浜嗚В銆?BR>銆銆鍦ㄧ浜岄儴鍒嗭紝鎴戜滑灝嗗崟鐙榪皊tring綾伙紝鎬庢牱浣跨敤瀹冨強瀹炵幇浠栦滑鐩鎬簰涔嬮棿鐨勮漿鎹€?BR><BR><IMG alt="" src="http://www.vckbase.com/document/image/paragraph.gif"> <B>瀛楃鍩虹 -- ASCII, DBCS, Unicode</B><BR><BR>銆銆鎵鏈夌殑 string 綾婚兘鏄互C-style瀛楃涓蹭負鍩虹鐨勩侰-style 瀛楃涓叉槸瀛楃鏁扮粍銆傛墍浠ユ垜浠厛浠嬬粛瀛楃綾誨瀷銆傝繖閲屾湁3縐嶇紪鐮佹ā寮忓搴?縐嶅瓧絎︾被鍨嬨傜涓縐嶇紪鐮佺被鍨嬫槸鍗曞瓙鑺傚瓧絎﹂泦錛坰ingle-byte character set or SBCS錛夈傚湪榪欑緙栫爜妯″紡涓嬶紝鎵鏈夌殑瀛楃閮藉彧鐢ㄤ竴涓瓧鑺傝〃紺恒侫SCII鏄疭BCS銆備竴涓瓧鑺傝〃紺虹殑0鐢ㄦ潵鏍囧織SBCS瀛楃涓茬殑緇撴潫銆?BR>銆銆絎簩縐嶇紪鐮佹ā寮忔槸澶氬瓧鑺傚瓧絎﹂泦錛坢ulti-byte character set or MBCS錛夈備竴涓狹BCS緙栫爜鍖呭惈涓浜涗竴涓瓧鑺傞暱鐨勫瓧絎︼紝鑰屽彟涓浜涘瓧絎﹀ぇ浜庝竴涓瓧鑺傜殑闀垮害銆傜敤鍦╓indows閲岀殑MBCS鍖呭惈涓ょ瀛楃綾誨瀷錛屽崟瀛楄妭瀛楃錛坰ingle-byte characters錛夊拰鍙屽瓧鑺傚瓧絎︼紙double-byte characters錛夈傜敱浜嶹indows閲屼嬌鐢ㄧ殑澶氬瓧鑺傚瓧絎︾粷澶ч儴鍒嗘槸涓や釜瀛楄妭闀匡紝鎵浠BCS甯歌鐢―BCS浠f浛銆?BR>銆銆鍦―BCS緙栫爜妯″紡涓紝涓浜涚壒瀹氱殑鍊艱淇濈暀鐢ㄦ潵琛ㄦ槑浠栦滑鏄弻瀛楄妭瀛楃鐨勪竴閮ㄥ垎銆備緥濡傦紝鍦⊿hift-JIS緙栫爜涓紙涓涓父鐢ㄧ殑鏃ユ枃緙栫爜妯″紡錛夛紝0x81-0x9f涔嬮棿鍜?0xe0-oxfc涔嬮棿鐨勫艱〃紺?榪欐槸涓涓弻瀛楄妭瀛楃錛屼笅涓涓瓙鑺傛槸榪欎釜瀛楃鐨勪竴閮ㄥ垎銆?榪欐牱鐨勫艱縐頒綔"leading bytes",浠栦滑閮藉ぇ浜?x7f銆傝窡闅忓湪涓涓猯eading byte瀛愯妭鍚庨潰鐨勫瓧鑺傝縐頒綔"trail byte"銆傚湪DBCS涓紝trail byte鍙互鏄換鎰忛潪0鍊箋傚儚SBCS涓鏍鳳紝DBCS瀛楃涓茬殑緇撴潫鏍囧織涔熸槸涓涓崟瀛楄妭琛ㄧず鐨?銆?BR>銆銆絎笁縐嶇紪鐮佹ā寮忔槸Unicode銆俇nicode鏄竴縐嶆墍鏈夌殑瀛楃閮戒嬌鐢ㄤ袱涓瓧鑺傜紪鐮佺殑緙栫爜妯″紡銆俇nicode瀛楃鏈夋椂涔熻縐頒綔瀹藉瓧絎︼紝鍥犱負瀹冩瘮鍗曞瓙鑺傚瓧絎﹀錛堜嬌鐢ㄤ簡鏇村鐨勫瓨鍌ㄧ┖闂達級銆傛敞鎰忥紝Unicode涓嶈兘琚湅浣淢BCS銆侻BCS鐨勭嫭鐗逛箣澶勫湪浜庡畠鐨勫瓧絎︿嬌鐢ㄤ笉鍚岄暱搴︾殑瀛楄妭緙栫爜銆俇nicode瀛楃涓蹭嬌鐢ㄤ袱涓瓧鑺傝〃紺虹殑0浣滀負瀹冪殑緇撴潫鏍囧織銆?BR>銆銆鍗曞瓧鑺傚瓧絎﹀寘鍚媺涓佹枃瀛楁瘝琛紝accented characters鍙夾SCII鏍囧噯鍜孌OS鎿嶄綔緋葷粺瀹氫箟鐨勫浘褰㈠瓧絎︺傚弻瀛楄妭瀛楃琚敤鏉ヨ〃紺轟笢浜氬強涓笢鐨勮璦銆俇nicode琚敤鍦–OM鍙奧indows NT鎿嶄綔緋葷粺鍐呴儴銆?BR>銆銆浣犱竴瀹氬凡緇忓緢鐔熸倝鍗曞瓧鑺傚瓧絎︺傚綋浣犱嬌鐢╟har鏃訛紝浣犲鐞嗙殑鏄崟瀛楄妭瀛楃銆傚弻瀛楄妭瀛楃涔熺敤char綾誨瀷鏉ヨ繘琛屾搷浣滐紙榪欐槸鎴戜滑灝嗕細鐪嬪埌鐨勫叧浜庡弻瀛愯妭瀛楃鐨勫緢澶氬鎬殑鍦版柟涔嬩竴錛夈俇nicode瀛楃鐢╳char_t鏉ヨ〃紺恒俇nicode瀛楃鍜屽瓧絎︿覆甯擱噺鐢ㄥ墠緙L鏉ヨ〃紺恒備緥濡傦細</P><PRE>wchar_t wch = L''1''; // 2 bytes, 0x0031 wchar_t* wsz = L"Hello"; // 12 bytes, 6 wide characters</PRE> <P><IMG alt="" src="http://www.vckbase.com/document/image/paragraph.gif"> <B>瀛楃鍦ㄥ唴瀛樹腑鏄庢牱瀛樺偍鐨?/B><BR><BR>銆銆鍗曞瓧鑺傚瓧絎︿覆錛氭瘡涓瓧絎﹀崰涓涓瓧鑺傛寜欏哄簭渚濇瀛樺偍錛屾渶鍚庝互鍗曞瓧鑺傝〃紺虹殑0緇撴潫銆備緥濡傘?Bob"鐨勫瓨璐艦寮忓涓嬶細</P> <TABLE id=AutoNumber1 style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=0 cellPadding=0 width="26%" border=1> <TBODY> <TR> <TD align=middle width="25%">42</TD> <TD align=middle width="25%"><FONT color=#990000>6F</FONT></TD> <TD align=middle width="25%">62</TD> <TD align=middle width="25%">00</TD></TR> <TR> <TD align=middle width="25%"><FONT color=#990000>B</FONT></TD> <TD align=middle width="25%"><FONT color=#990000>o</FONT></TD> <TD align=middle width="25%"><FONT color=#990000>b</FONT></TD> <TD align=middle width="25%"><FONT color=#990000>BOS</FONT></TD></TR></TBODY></TABLE> <P>Unicode鐨勫瓨鍌ㄥ艦寮忥紝L"Bob"</P> <TABLE id=AutoNumber2 style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=0 cellPadding=0 width="42%" border=1> <TBODY> <TR> <TD align=middle width="25%">42 00 </TD> <TD align=middle width="25%"><FONT color=#990000>6F</FONT> 00</TD> <TD align=middle width="25%">62 00</TD> <TD align=middle width="25%">00 00</TD></TR> <TR> <TD align=middle width="25%"><FONT color=#990000>B</FONT></TD> <TD align=middle width="25%"><FONT color=#990000>o</FONT></TD> <TD align=middle width="25%"><FONT color=#990000>b</FONT></TD> <TD align=middle width="25%"><FONT color=#990000>BOS</FONT></TD></TR></TBODY></TABLE> <P>浣跨敤涓や釜瀛楄妭琛ㄧず鐨?鏉ュ仛緇撴潫鏍囧織銆?BR><BR>銆銆涓鐪肩湅涓婂幓錛孌BCS 瀛楃涓插緢鍍?SBCS 瀛楃涓詫紝浣嗘槸鎴戜滑涓浼氬効灝嗙湅鍒?DBCS 瀛楃涓茬殑寰涔嬪錛屽畠浣垮緱浣跨敤瀛楃涓叉搷浣滃嚱鏁板拰姘稿瓧絎︽寚閽堥亶鍘嗕竴涓瓧絎︿覆鏃朵細浜х敓棰勬枡涔嬪鐨勭粨鏋溿傚瓧絎︿覆" " ("nihongo")鍦ㄥ唴瀛樹腑鐨勫瓨鍌ㄥ艦寮忓涓嬶紙LB鍜孴B鍒嗗埆鐢ㄦ潵琛ㄧず leading byte 鍜?trail byte錛?/P> <TABLE id=AutoNumber3 style="BORDER-COLLAPSE: collapse" borderColor=#111111 height=52 cellSpacing=0 cellPadding=0 width="62%" border=1> <TBODY> <TR> <TD align=middle width="25%" height=20>93 <FONT color=#990000>FA</FONT></TD> <TD align=middle width="25%" height=20>96 <FONT color=#990000>7B</FONT></TD> <TD align=middle width="25%" height=20><FONT color=#990000>8C EA</FONT></TD> <TD align=middle width="25%" height=20>00</TD></TR> <TR> <TD align=middle width="25%" height=20><FONT color=#990000>LB TB</FONT></TD> <TD align=middle width="25%" height=20><FONT color=#990000>LB TB</FONT></TD> <TD align=middle width="25%" height=20><FONT color=#990000>LB TB</FONT></TD> <TD align=middle width="25%" height=20><FONT color=#990000>EOS</FONT></TD></TR> <TR> <TD align=middle width="25%" height=20><IMG height=13 alt="" src="http://www.vckbase.com/document/journal/vckbase30/images/ri.gif" width=10 border=0></TD> <TD align=middle width="25%" height=20><IMG height=13 alt="" src="http://www.vckbase.com/document/journal/vckbase30/images/ben.gif" width=13 border=0></TD> <TD align=middle width="25%" height=20><IMG height=13 alt="" src="http://www.vckbase.com/document/journal/vckbase30/images/yu.gif" width=13 border=0></TD> <TD align=middle width="25%" height=20><FONT color=#990000>EOS</FONT></TD></TR></TBODY></TABLE> <P>鍊煎緱娉ㄦ剰鐨勬槸錛?ni"鐨勫間笉鑳借瑙i噴鎴怶ORD鍨嬪?xfa93錛岃屽簲璇ョ湅浣滀袱涓?3鍜宖a浠ヨ繖縐嶉『搴忚浣滀負"ni"鐨勭紪鐮併?BR><BR><IMG alt="" src="http://www.vckbase.com/document/image/paragraph.gif"> <B>浣跨敤瀛楃涓插鐞嗗嚱鏁?/B><BR><BR>銆銆鎴戜滑閮藉凡緇忚榪嘋璇█涓殑瀛楃涓插嚱鏁幫紝strcpy(), sprintf(), atoll()絳夈傝繖浜涘瓧絎︿覆鍙簲璇ョ敤鏉ュ鐞嗗崟瀛楄妭瀛楃瀛楃涓層傛爣鍑嗗簱涔熸彁渚涗簡浠呴傜敤浜嶶nicode綾誨瀷瀛楃涓茬殑鍑芥暟錛屾瘮濡倃cscpy(), swprintf(), wtol()絳夈?BR>銆銆寰蔣榪樺湪瀹冪殑CRT(C runtime library)涓鍔犱簡鎿嶄綔DBCS瀛楃涓茬殑鐗堟湰銆係tr***()鍑芥暟閮芥湁瀵瑰簲鍚嶅瓧鐨凞BCS鐗堟湰_mbs***()銆傚鏋滀綘鏂欏埌鍙兘浼氶亣鍒癉BCS瀛楃涓詫紙濡傛灉浣犵殑杞歡浼氳瀹夎鍦ㄤ嬌鐢―BCS緙栫爜鐨勫浗瀹訛紝濡備腑鍥斤紝鏃ユ湰絳夛紝浣犲氨鍙兘浼氾級錛屼綘搴旇浣跨敤_mbs***()鍑芥暟錛屽洜涓轟粬浠篃鍙互澶勭悊SBCS瀛楃涓層傦紙涓涓狣BCS瀛楃涓蹭篃鍙兘鍚湁鍗曞瓧鑺傚瓧絎︼紝榪欏氨鏄負浠涔坃mbs***()鍑芥暟涔熻兘澶勭悊SBCS瀛楃涓茬殑鍘熷洜錛?BR>銆銆璁╂垜浠潵鐪嬩竴涓吀鍨嬬殑瀛楃涓叉潵闃愭槑涓轟粈涔堥渶瑕佷笉鍚岀増鏈殑瀛楃涓插鐞嗗嚱鏁般傛垜浠繕鏄嬌鐢ㄥ墠闈㈢殑Unicode瀛楃涓?L"Bob"錛?/P> <TABLE id=AutoNumber4 style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=0 cellPadding=0 width="42%" border=1> <TBODY> <TR> <TD align=middle width="25%">42 00 </TD> <TD align=middle width="25%"><FONT color=#990000>6F</FONT> 00</TD> <TD align=middle width="25%">62 00</TD> <TD align=middle width="25%">00 00</TD></TR> <TR> <TD align=middle width="25%"><FONT color=#990000>B</FONT></TD> <TD align=middle width="25%"><FONT color=#990000>o</FONT></TD> <TD align=middle width="25%"><FONT color=#990000>b</FONT></TD> <TD align=middle width="25%"><FONT color=#990000>BOS</FONT></TD></TR></TBODY></TABLE> <P>銆銆鍥犱負x86CPU鏄痩ittle-endian錛屽?x0042鍦ㄥ唴瀛樹腑鐨勫瓨鍌ㄥ艦寮忔槸42 00銆備綘鑳界湅鍑哄鏋滆繖涓瓧絎︿覆琚紶緇檚trlen()鍑芥暟浼氬嚭鐜頒粈涔堥棶棰樺悧錛熷畠灝嗗厛鐪嬪埌絎竴涓瓧鑺?2錛岀劧鍚庢槸00錛岃?0鏄瓧絎︿覆緇撴潫鐨勬爣蹇楋紝浜庢槸strlen()灝嗕細榪斿洖1銆傚鏋滄妸"Bob"浼犵粰wcslen()錛屽皢浼氬緱鍑烘洿鍧忕殑緇撴灉銆倃cslen()灝嗕細鍏堢湅鍒?x6f42錛岀劧鍚庢槸0x0062錛岀劧鍚庝竴鐩磋鍒頒綘鐨勭紦鍐插尯鐨勬湯灝撅紝鐩村埌鍙戠幇00 00緇撴潫鏍囧織鎴栬呭紩璧蜂簡GPF銆?BR>銆銆鍒扮洰鍓嶄負姝紝鎴戜滑宸茬粡璁ㄨ浜唖tr***()鍜寃cs***()鐨勭敤娉曞強瀹冧滑涔嬮棿鐨勫尯鍒係tr***()鍜宊mbs**()涔嬮棿鐨勬湁鍖哄埆鍖哄埆鍛紵鏄庣櫧浠栦滑涔嬮棿鐨勫尯鍒紝瀵逛簬閲囩敤姝g‘鐨勬柟娉曟潵閬嶅巻DBCS瀛楃涓叉槸寰堥噸瑕佺殑銆備笅闈紝鎴戜滑灝嗗厛浠嬬粛瀛楃涓茬殑閬嶅巻錛岀劧鍚庡洖鍒皊tr***()涓巁mbs***()涔嬮棿鐨勫尯鍒繖涓棶棰樹笂鏉ャ?BR><BR><IMG alt="" src="http://www.vckbase.com/document/image/paragraph.gif"> <B>姝g‘鐨勯亶鍘嗗拰绱㈠紩瀛楃涓?/B><BR><BR>銆銆鍥犱負鎴戜滑涓ぇ澶氭暟浜洪兘鏄敤鐫SBCS瀛楃涓叉垚闀跨殑錛屾墍浠ユ垜浠湪閬嶅巻瀛楃涓叉椂錛屽父甯鎬嬌鐢ㄦ寚閽堢殑++-鍜?鎿嶄綔銆傛垜浠篃浣跨敤鏁扮粍涓嬫爣鐨勮〃紺哄艦寮忔潵鎿嶄綔瀛楃涓蹭腑鐨勫瓧絎︺傝繖涓ょ鏂瑰紡鏄敤浜嶴BCS鍜孶nicode瀛楃涓詫紝鍥犱負瀹冧滑涓殑瀛楃鏈夌潃鐩稿悓鐨勫搴︼紝緙栬瘧鍣ㄨ兘姝g‘鐨勮繑鍥炴垜浠渶瑕佺殑瀛楃銆?BR>銆銆鐒惰岋紝褰撶鍒癉BCS瀛楃涓叉椂錛屾垜浠繀欏繪姏寮冭繖浜涗範鎯傝繖閲屾湁浣跨敤鎸囬拡閬嶅巻DBCS瀛楃涓叉椂鐨勪袱鏉¤鍒欍傝繚鑳屼簡榪欎袱鏉¤鍒欙紝浣犵殑紼嬪簭灝變細瀛樺湪DBCS鏈夊叧鐨刡ugs銆?/P> <DIR> <LI>1錛庡湪鍓嶅悜閬嶅巻鏃訛紝涓嶈浣跨敤++鎿嶄綔錛岄櫎闈炰綘姣忔閮芥鏌ead byte錛? <LI>2錛庢案榪滀笉瑕佷嬌鐢?鎿嶄綔榪涜鍚庡悜閬嶅巻銆?</LI></DIR> <P>銆銆鎴戜滑鍏堟潵闃愯堪瑙勫垯2錛屽洜涓烘壘鍒頒竴涓繚鑳屽畠鐨勭湡瀹炵殑瀹炰緥浠g爜鏄緢瀹規槗鐨勩傚亣璁句綘鏈変竴涓▼搴忓湪浣犺嚜宸辯殑鐩綍閲屼繚瀛樹簡涓涓緗枃浠訛紝浣犳妸瀹夎鐩綍淇濆瓨鍦ㄦ敞鍐岃〃涓傚湪榪愯鏃訛紝浣犱粠娉ㄥ唽琛ㄤ腑璇誨彇瀹夎鐩綍錛岀劧鍚庡悎鎴愰厤緗枃浠跺悕錛屾帴鐫璇誨彇璇ユ枃浠躲傚亣璁撅紝浣犵殑瀹夎鐩綍鏄疌:\Program Files\MyCoolApp錛岄偅涔堜綘鍚堟垚鐨勬枃浠跺悕搴旇鏄疌:\Program Files\MyCoolApp\config.bin銆傚綋浣犺繘琛屾祴璇曟椂錛屼綘鍙戠幇紼嬪簭榪愯姝e父銆?BR>銆銆鐜板湪錛屾兂璞′綘鍚堟垚鏂囦歡鍚嶇殑浠g爜鍙兘鏄繖鏍風殑錛?/P><PRE>bool GetConfigFileName ( char* pszName, size_t nBuffSize ) { char szConfigFilename[MAX_PATH]; // Read install dir from registry... we''ll assume it succeeds. // Add on a backslash if it wasn''t present in the registry value. // First, get a pointer to the terminating zero. char* pLastChar = strchr ( szConfigFilename, ''<!-- ~ Value_txtContent ~ -->'' ); // Now move it back one character. pLastChar--; if ( *pLastChar != ''\\'' ) strcat ( szConfigFilename, "\\" ); // Add on the name of the config file. strcat ( szConfigFilename, "config.bin" ); // If the caller''s buffer is big enough, return the filename. if ( strlen ( szConfigFilename ) >= nBuffSize ) return false; else { strcpy ( pszName, szConfigFilename ); return true; } } </PRE>銆銆榪欐槸涓孌靛緢鍋ュ.鐨勪唬鐮侊紝鐒惰屽湪閬囧埌 DBCS 瀛楃鏃跺畠灝嗕細鍑洪敊銆傝鎴戜滑鏉ョ湅鐪嬩負浠涔堛傚亣璁句竴涓棩鏈敤鎴蜂嬌鐢ㄤ簡浣犵殑紼嬪簭錛屾妸瀹冨畨瑁呭湪 C:\<IMG height=13 alt="" src="http://www.vckbase.com/document/journal/vckbase30/images/youkoso.gif" width=35 border=0>銆備笅闈㈡槸榪欎釜鍚嶅瓧鍦ㄥ唴瀛樹腑鐨勫瓨鍌ㄥ艦寮忥細<BR>銆 <TABLE id=AutoNumber5 style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=0 cellPadding=0 width="55%" border=1> <TBODY> <TR> <TD align=middle width="12%">43</TD> <TD align=middle width="12%"><FONT color=#990000>3A</FONT></TD> <TD align=middle width="12%"><FONT color=#0000ff>5C</FONT></TD> <TD align=middle width="12%">83 88</TD> <TD align=middle width="13%">83 45</TD> <TD align=middle width="13%">83 52</TD> <TD align=middle width="13%">83 <FONT color=#0000ff>5C</FONT></TD> <TD align=middle width="13%">00</TD></TR> <TR> <TD align=middle width="12%">銆</TD> <TD align=middle width="12%">銆</TD> <TD align=middle width="12%">銆</TD> <TD align=middle width="12%"><FONT color=#990000>LB TB </FONT></TD> <TD align=middle width="13%"><FONT color=#990000>LB TB </FONT></TD> <TD align=middle width="13%"><FONT color=#990000>LB TB </FONT></TD> <TD align=middle width="13%"><FONT color=#990000>LB TB </FONT></TD> <TD align=middle width="13%">銆</TD></TR> <TR> <TD align=middle width="12%">C</TD> <TD align=middle width="12%">:</TD> <TD align=middle width="12%">\</TD> <TD align=middle width="12%"><IMG height=11 alt="" src="http://www.vckbase.com/document/journal/vckbase30/images/yo.gif" width=9 border=0></TD> <TD align=middle width="13%"><IMG height=13 alt="" src="http://www.vckbase.com/document/journal/vckbase30/images/u.gif" width=10 border=0></TD> <TD align=middle width="13%"><IMG height=11 alt="" src="http://www.vckbase.com/document/journal/vckbase30/images/ko.gif" width=9 border=0></TD> <TD align=middle width="13%"><IMG height=12 alt="" src="http://www.vckbase.com/document/journal/vckbase30/images/so.gif" width=10 border=0></TD> <TD align=middle width="13%"><SPAN lang=EN-US style="FONT-SIZE: 12pt; COLOR: #990000; FONT-FAMILY: Courier New">EOS</SPAN></TD></TR></TBODY></TABLE> <P>銆銆褰撲嬌鐢?GetConfigFileName() 媯鏌ュ熬閮ㄧ殑''\\''鏃訛紝瀹冨鎵懼畨瑁呯洰褰曞悕涓渶鍚庣殑闈?瀛楄妭錛岀湅瀹冩槸絳変簬''\\''鐨勶紝鎵浠ユ病鏈夐噸鏂板鍔犱竴涓?'\\''銆傜粨鏋滄槸浠g爜榪斿洖浜嗛敊璇殑鏂囦歡鍚嶃?BR>銆銆鍝噷鍑洪敊浜嗗憿錛熺湅鐪嬩笂闈袱涓鐢ㄨ摑鑹查珮閲忔樉紺虹殑瀛楄妭銆傛枩鏉?'\\''鐨勫兼槸0x5c銆?' ''鐨勫兼槸83 5c銆備笂闈㈢殑浠g爜閿欒鐨勮鍙栦簡涓涓?trail byte錛屾妸瀹冨綋浣滀簡涓涓瓧絎︺?BR>銆銆姝g‘鐨勫悗鍚戦亶鍘嗘柟娉曟槸浣跨敤鑳藉璇嗗埆DBCS瀛楃鐨勫嚱鏁幫紝浣挎寚閽堢Щ鍔ㄦ紜殑瀛楄妭鏁般備笅闈㈡槸姝g‘鐨勪唬鐮併傦紙鎸囬拡縐誨姩鐨勫湴鏂圭敤綰㈣壊鏍囨槑錛?</P><PRE>bool FixedGetConfigFileName ( char* pszName, size_t nBuffSize ) { char szConfigFilename[MAX_PATH]; // Read install dir from registry... we''ll assume it succeeds. // Add on a backslash if it wasn''t present in the registry value. // First, get a pointer to the terminating zero. char* pLastChar = _mbschr ( szConfigFilename, ''<!-- ~ Value_txtContent ~ -->'' ); // Now move it back one double-byte character. <FONT color=#ff0000> pLastChar = CharPrev ( szConfigFilename, pLastChar );</FONT> if ( *pLastChar != ''\\'' ) _mbscat ( szConfigFilename, "\\" ); // Add on the name of the config file. _mbscat ( szConfigFilename, "config.bin" ); // If the caller''s buffer is big enough, return the filename. if ( _mbslen ( szInstallDir ) >= nBuffSize ) return false; else { _mbscpy ( pszName, szConfigFilename ); return true; } } </PRE>銆銆涓婇潰鐨勫嚱鏁頒嬌鐢–harPrev() API浣縫LastChar鍚戝悗縐誨姩涓涓瓧絎︼紝榪欎釜瀛楃鍙兘鏄袱涓瓧鑺傞暱銆傚湪榪欎釜鐗堟湰閲岋紝if鏉′歡姝e父宸ヤ綔錛屽洜涓簂ead byte姘歌繙涓嶄細絳変簬0x5c銆?BR>銆銆璁╂垜浠潵鎯寵薄涓涓繚鑳岃鍒?鐨勫満鍚堛備緥濡傦紝浣犲彲鑳借媯嫻嬩竴涓敤鎴瘋緭鍏ョ殑鏂囦歡鍚嶆槸鍚﹀嬈″嚭鐜頒簡'':''銆傚鏋滐紝浣犱嬌鐢?+鎿嶄綔鏉ラ亶鍘嗗瓧絎︿覆錛岃屼笉鏄嬌鐢–harNext()錛屼綘鍙兘浼氬彂鍑轟笉姝g‘鐨勯敊璇鍛婂鏋滄伆宸ф湁涓涓猼rail byte瀹冪殑鍊肩殑絳変簬'':''鐨勫箋?BR>涓庤鍒?鐩稿叧鐨勫叧浜庡瓧絎︿覆绱㈠紩鐨勮鍒欙細<PRE>2a. 姘歌繙涓嶈浣跨敤鍑忔硶鍘誨緱鍒頒竴涓瓧絎︿覆鐨勭儲寮曘?/PRE> <P>榪濊儗榪欐潯瑙勫垯鐨勪唬鐮佸拰榪濊儗瑙勫垯2鐨勪唬鐮佸緢鐩鎬技銆備緥濡傦紝</P><PRE>char* pLastChar = &szConfigFilename [strlen(szConfigFilename) - 1];</PRE> <P>榪欏拰鍚戝悗縐誨姩涓涓寚閽堟槸鍚屾牱鐨勬晥鏋溿?BR><BR><IMG alt="" src="http://www.vckbase.com/document/image/paragraph.gif"><B> 鍥炲埌鍏充簬str***()鍜宊mbs***()鐨勫尯鍒?/B><BR><BR>銆銆鐜板湪錛屾垜浠簲璇ュ緢娓呮涓轟粈涔坃mbs***()鍑芥暟鏄繀闇鐨勩係tr***()鍑芥暟鏍規湰涓嶈冭檻DBCS瀛楃錛岃宊mbs***()鑰冭檻銆傚鏋滐紝浣犺皟鐢╯trrchr("C:\\ ", ''\\'')錛岃繑鍥炵粨鏋滃彲鑳芥槸閿欒鐨勶紝鐒惰宊mbsrchr()灝嗕細璁ゅ嚭鏈鍚庣殑鍙屽瓧鑺傚瓧絎︼紝榪斿洖涓涓寚鍚戠湡鐨?'\\''鐨勬寚閽堛?BR>銆銆鍏充簬瀛楃涓插嚱鏁扮殑鏈鍚庝竴鐐癸細str***()鍜宊mbs***()鍑芥暟璁や負瀛楃涓茬殑闀垮害閮芥槸浠har鏉ヨ綆楃殑銆傛墍浠ワ紝濡傛灉涓涓瓧絎︿覆鍖呭惈3涓弻瀛楄妭瀛楃錛宊mbslen()灝嗕細榪斿洖6銆俇nicode鍑芥暟榪斿洖鐨勯暱搴︽槸鎸墂char_t鏉ヨ綆楃殑銆備緥濡傦紝wcslen(L"Bob")榪斿洖3銆?BR><BR><IMG alt="" src="http://www.vckbase.com/document/image/paragraph.gif"><B> Win32 API涓殑MBCS鍜孶nicode</B><BR><BR>涓ょ粍 APIs錛?<BR>銆銆灝界浣犱篃璁鎬粠鏉ユ病鏈夋敞鎰忚繃錛學in32涓殑姣忎釜涓庡瓧絎︿覆鐩稿叧鐨凙PI鍜宮essage閮芥湁涓や釜鐗堟湰銆備竴涓増鏈帴鍙桵BCS瀛楃涓詫紝鍙︿竴涓帴鍙桿nicode瀛楃涓層備緥濡傦紝鏍規湰娌℃湁SetWindowText()榪欎釜API錛岀浉鍙嶏紝鏈塖etWindowTextA()鍜孲etWindowTextW()銆傚悗緙A琛ㄦ槑榪欐槸MBCS鍑芥暟錛屽悗緙W琛ㄧず榪欐槸Unicode鐗堟湰鐨勫嚱鏁般?BR>銆銆褰撲綘 build 涓涓?Windows 紼嬪簭錛屼綘鍙互閫夋嫨鏄敤 MBCS 鎴栬?Unicode APIs銆傚鏋滐紝浣犳浘緇忕敤榪嘨C鍚戝騫朵笖娌℃湁鏀硅繃棰勫鐞嗙殑璁劇疆錛岄偅琛ㄦ槑浣犵敤鐨勬槸MBCS鐗堟湰銆傞偅涔堬紝鏃㈢劧娌℃湁 SetWindowText() API錛屾垜浠負浠涔堝彲浠ヤ嬌鐢ㄥ畠鍛紵winuser.h澶存枃浠跺寘鍚簡涓浜涘畯錛屼緥濡傦細 </P><PRE>BOOL WINAPI SetWindowTextA ( HWND hWnd, LPCSTR lpString ); BOOL WINAPI SetWindowTextW ( HWND hWnd, LPCWSTR lpString ); #ifdef UNICODE #define SetWindowText SetWindowTextW #else #define SetWindowText SetWindowTextA #endif </PRE>褰撲嬌鐢∕BCS APIs鏉uild紼嬪簭鏃訛紝UNICODE娌℃湁琚畾涔夛紝鎵浠ラ澶勭悊鍣ㄧ湅鍒幫細<PRE>#define SetWindowText SetWindowTextA</PRE> <P>銆銆榪欎釜瀹忓畾涔夋妸鎵鏈夊SetWindowText鐨勮皟鐢ㄩ兘杞崲鎴愮湡姝g殑API鍑芥暟SetWindowTextA銆傦紙褰撶劧錛屼綘鍙互鐩存帴璋冪敤SetWindowTextA() 鎴栬?SetWindowTextW()錛岃櫧鐒朵綘涓嶅繀閭d箞鍋氥傦級<BR>銆銆鎵浠ワ紝濡傛灉浣犳兂鎶婇粯璁や嬌鐢ㄧ殑API鍑芥暟鍙樻垚Unicode鐗堢殑錛屼綘鍙互鍦ㄩ澶勭悊鍣ㄨ緗腑錛屾妸_MBCS浠庨瀹氫箟鐨勫畯鍒楄〃涓垹闄わ紝鐒跺悗娣誨姞UNICODE鍜宊UNICODE銆?浣犻渶瑕佷袱涓兘瀹氫箟錛屽洜涓轟笉鍚岀殑澶存枃浠跺彲鑳戒嬌鐢ㄤ笉鍚岀殑瀹忋? 鐒惰岋紝濡傛灉浣犵敤char鏉ュ畾涔変綘鐨勫瓧絎︿覆錛屼綘灝嗕細闄峰叆涓涓按灝殑澧冨湴銆傝冭檻涓嬮潰鐨勪唬鐮侊細</P><PRE>HWND hwnd = GetSomeWindowHandle(); char szNewText[] = "we love Bob!"; SetWindowText ( hwnd, szNewText );</PRE> <P>鍦ㄩ澶勭悊鍣ㄦ妸SetWindowText鐢⊿etWindowTextW鏉ユ浛鎹㈠悗錛屼唬鐮佸彉鎴愶細</P><PRE>HWND hwnd = GetSomeWindowHandle(); char szNewText[] = "we love Bob!"; SetWindowTextW ( hwnd, szNewText );</PRE> <P>銆銆鐪嬪埌闂浜嗗悧錛熸垜浠妸鍗曞瓧鑺傚瓧絎︿覆浼犵粰浜嗕竴涓互Unicode瀛楃涓插仛鍙傛暟鐨勫嚱鏁般傝В鍐寵繖涓棶棰樼殑絎竴涓柟妗堟槸浣跨敤 #ifdef 鏉ュ寘鍚瓧絎︿覆鍙橀噺鐨勫畾涔夛細</P><PRE>HWND hwnd = GetSomeWindowHandle(); #ifdef UNICODE wchar_t szNewText[] = L"we love Bob!"; #else char szNewText[] = "we love Bob!"; #endif SetWindowText ( hwnd, szNewText );</PRE> <P>浣犲彲鑳藉凡緇忔劅鍙楀埌浜嗚繖鏍峰仛灝嗕細浣夸綘澶氫箞鐨勫ご鐤箋傚畬緹庣殑瑙e喅鏂規鏄嬌鐢═CHAR.<BR><BR><IMG alt="" src="http://www.vckbase.com/document/image/paragraph.gif"><B> 浣跨敤TCHAR</B><BR><BR>銆銆TCHAR鏄竴縐嶅瓧絎︿覆綾誨瀷錛屽畠璁╀綘鍦ㄤ互MBCS鍜孶NNICODE鏉uild紼嬪簭鏃跺彲浠ヤ嬌鐢ㄥ悓鏍風殑浠g爜錛屼笉闇瑕佷嬌鐢ㄧ箒鐞愮殑瀹忓畾涔夋潵鍖呭惈浣犵殑浠g爜銆俆CHAR鐨勫畾涔夊涓嬶細</P><PRE>#ifdef UNICODE typedef wchar_t TCHAR; #else typedef char TCHAR; #endif</PRE> <P>鎵浠ョ敤MBCS鏉uild鏃訛紝TCHAR鏄痗har錛屼嬌鐢║NICODE鏃訛紝TCHAR鏄痺char_t銆傝繕鏈変竴涓畯鏉ュ鐞嗗畾涔塙nicode瀛楃涓插父閲忔椂鎵闇鐨凩鍓嶇紑銆?/P><PRE>#ifdef UNICODE #define _T(x) L##x #else #define _T(x) x #endif</PRE> <P>銆銆##鏄竴涓澶勭悊鎿嶄綔絎︼紝瀹冨彲浠ユ妸涓や釜鍙傛暟榪炲湪涓璧楓傚鏋滀綘鐨勪唬鐮佷腑闇瑕佸瓧絎︿覆甯擱噺錛屽湪瀹冨墠闈㈠姞涓奯T瀹忋傚鏋滀綘浣跨敤Unicode鏉uild錛屽畠浼氬湪瀛楃涓插父閲忓墠鍔犱笂L鍓嶇紑銆?/P><PRE>TCHAR szNewText[] = _T("we love Bob!");</PRE> <P>銆銆鍍忔槸鐢ㄥ畯鏉ラ殣钘廠etWindowTextA/W鐨勭粏鑺備竴鏍鳳紝榪樻湁寰堝鍙互渚涗綘浣跨敤鐨勫畯鏉ュ疄鐜皊tr***()鍜宊mbs***()絳夊瓧絎︿覆鍑芥暟銆備緥濡傦紝浣犲彲浠ヤ嬌鐢╛tcsrchr瀹忔潵鏇挎崲strrchr()銆乢mbsrchr()鍜寃csrchr()銆俖tcsrchr鏍規嵁浣犻瀹氫箟鐨勫畯鏄痏MBCS榪樻槸UNICODE鏉ユ墿灞曟垚姝g‘鐨勫嚱鏁幫紝灝卞儚SetWindowText鎵浣滅殑涓鏍楓?BR>銆銆涓嶄粎str***()鍑芥暟鏈塗CHAR瀹忋傚叾浠栫殑鍑芥暟濡傦紝 _stprintf錛堜唬鏇縮prinft()鍜宻wprintf()錛?_tfopen錛堜唬鏇縡open()鍜宊wfopen()錛夈?MSDN涓?Generic-Text Routine Mappings."鏍囬涓嬫湁瀹屾暣鐨勫畯鍒楄〃銆?BR><BR><IMG alt="" src="http://www.vckbase.com/document/image/paragraph.gif"><B> 瀛楃涓插拰TCHAR typedefs</B><BR><BR>銆銆鐢變簬Win32 API鏂囨。鐨勫嚱鏁板垪琛ㄤ嬌鐢ㄥ嚱鏁扮殑甯哥敤鍚嶅瓧錛堜緥濡傦紝"SetWindowText"錛夛紝鎵鏈夌殑瀛楃涓查兘鏄敤TCHAR鏉ュ畾涔夌殑銆傦紙闄や簡XP涓紩鍏ョ殑鍙傜敤浜嶶nicode鐨凙PI錛夈備笅闈㈠垪鍑轟竴浜涘父鐢ㄧ殑typedefs錛屼綘鍙互鍦╩sdn涓湅鍒頒粬浠?/P> <TABLE id=AutoNumber6 style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=4 cellPadding=4 width="98%" border=1> <TBODY> <TR> <TD align=middle width="16%"><B>type </B></TD> <TD align=middle width="42%"><B>Meaning in MBCS builds </B></TD> <TD align=middle width="42%"><B>Meaning in Unicode builds</B></TD></TR> <TR> <TD width="16%">WCHAR</TD> <TD width="42%">wchar_t</TD> <TD width="42%">wchar_t</TD></TR> <TR> <TD width="16%">LPSTR </TD> <TD width="42%">zero-terminated string of char (char*)</TD> <TD width="42%">zero-terminated string of char (char*)</TD></TR> <TR> <TD width="16%">LPCSTR </TD> <TD width="42%">constant zero-terminated string of char (const char*)</TD> <TD width="42%">constant zero-terminated string of char (const char*)</TD></TR> <TR> <TD width="16%">LPWSTR</TD> <TD width="42%">zero-terminated Unicode string (wchar_t*) </TD> <TD width="42%">zero-terminated Unicode string (wchar_t*)</TD></TR> <TR> <TD width="16%">LPCWSTR</TD> <TD width="42%">constant zero-terminated Unicode string (const wchar_t*)</TD> <TD width="42%">constant zero-terminated Unicode string (const wchar_t*) </TD></TR> <TR> <TD width="16%"><XXXXIME xime="7"></XXXXIME>TCHAR</TD> <TD width="42%"><XXXXIME xime="7"></XXXXIME>char</TD> <TD width="42%"><XXXXIME xime="7"></XXXXIME>wchar_t</TD></TR> <TR> <TD width="16%">LPTSTR</TD> <TD width="42%">zero-terminated string of TCHAR (TCHAR*) </TD> <TD width="42%">zero-terminated string of TCHAR (TCHAR*)</TD></TR> <TR> <TD width="16%">LPCTSTR </TD> <TD width="42%">constant zero-terminated string of TCHAR (const TCHAR*)</TD> <TD width="42%">constant zero-terminated string of TCHAR (const TCHAR*)</TD></TR></TBODY></TABLE> <P><IMG alt="" src="http://www.vckbase.com/document/image/paragraph.gif"><B> 浣曟椂浣跨敤 TCHAR 鍜?Unicode</B><BR><BR>銆銆鍒扮幇鍦紝浣犲彲鑳戒細闂紝鎴戜滑涓轟粈涔堣浣跨敤Unicode銆傛垜宸茬粡鐢ㄤ簡寰堝騫寸殑char銆備笅鍒?縐嶆儏鍐典笅錛屼嬌鐢║nicode灝嗕細浣夸綘鍙楃泭錛?/P> <DIR> <LI>1錛庝綘鐨勭▼搴忓彧榪愯鍦╓indows NT緋葷粺涓? <LI>2錛?浣犵殑紼嬪簭闇瑕佸鐞嗚秴榪嘙AX_PATH涓瓧絎﹂暱鐨勬枃浠跺悕銆? <LI>3錛?浣犵殑紼嬪簭闇瑕佷嬌鐢╔P涓紩鍏ョ殑鍙湁Unicode鐗堟湰鐨凙PI. </LI></DIR> <P>銆銆Windows 9x 涓ぇ澶氭暟鐨?API 娌℃湁瀹炵幇 Unicode 鐗堟湰銆傛墍浠ワ紝濡傛灉浣犵殑紼嬪簭瑕佸湪windows 9x涓繍琛岋紝浣犲繀欏諱嬌鐢∕BCS APIs銆傜劧鑰岋紝鐢變簬NT緋葷粺鍐呴儴閮戒嬌鐢║nicode錛屾墍浠ヤ嬌鐢║nicode APIs灝嗕細鍔犲揩浣犵殑紼嬪簭鐨勮繍琛岄熷害銆傛瘡嬈★紝浣犱紶閫掍竴涓瓧絎︿覆璋冪敤MBCS API錛屾搷浣滅郴緇熶細鎶婅繖涓瓧絎︿覆杞崲鎴怳nicode瀛楃涓詫紝鐒跺悗璋冪敤瀵瑰簲鐨刄nicode API銆傚鏋滀竴涓瓧絎︿覆琚繑鍥烇紝鎿嶄綔緋葷粺榪樿鎶婂畠杞彉鍥炲幓銆傚敖綆¤繖涓漿鎹㈣繃紼嬭楂樺害浼樺寲浜嗭紝浣嗗畠瀵歸熷害閫犳垚鐨勬崯澶辨槸鏃犳硶閬垮厤鐨勩?BR>銆銆鍙浣犱嬌鐢║nicode API錛孨T緋葷粺鍏佽浣跨敤闈炲父闀跨殑鏂囦歡鍚嶏紙紿佺牬浜哅AX_PATH鐨勯檺鍒訛紝MAX_PATH=260錛夈備嬌鐢║nicode API鐨勫彟涓涓紭鐐規槸浣犵殑紼嬪簭浼氳嚜鍔ㄥ鐞嗙敤鎴瘋緭鍏ョ殑鍚勭璇█銆傛墍浠ヤ竴涓敤鎴峰彲浠ヨ緭鍏ヨ嫳鏂囷紝涓枃鎴栬呮棩鏂囷紝鑰屼綘涓嶉渶瑕侀澶栫紪鍐欎唬鐮佸幓澶勭悊瀹冧滑銆?BR>銆銆鏈鍚庯紝闅忕潃windows 9x浜у搧鐨勬貳鍑猴紝寰蔣浼間箮姝e湪鎶涘純MBCS APIs銆備緥濡傦紝鍖呭惈涓や釜瀛楃涓插弬鏁扮殑SetWindowTheme() API鍙湁Unicode鐗堟湰鐨勩備嬌鐢║nicode鏉uild浣犵殑紼嬪簭灝嗕細綆鍖栧瓧絎︿覆鐨勫鐞嗭紝浣犱笉蹇呭湪MBCS鍜孶nicdoe涔嬮棿鐩鎬簰杞崲銆?BR>銆銆鍗充嬌浣犵幇鍦ㄤ笉浣跨敤Unicode鏉uild浣犵殑紼嬪簭錛屼綘涔熷簲璇ヤ嬌鐢═CHAR鍙婂叾鐩稿叧鐨勫畯銆傝繖鏍峰仛涓嶄粎鍙互鐨勪唬鐮佸彲浠ュ緢濂藉湴澶勭悊DBCS錛岃屼笖濡傛灉灝嗘潵浣犳兂鐢║nicode鏉uild浣犵殑紼嬪簭錛屼綘鍙渶瑕佹敼鍙樹竴涓嬮澶勭悊鍣ㄤ腑鐨勮緗氨鍙互瀹炵幇浜嗐?BR><BR></P> <P></P> <P></P> <P></P></TD></TR> <TR> <TD><IMG alt="" src="http://www.vckbase.com/document/image/paragraph.gif"><B> 浣滆呯畝浠?/B><BR>銆銆Michael Dunn錛氬眳浣忓湪闃沖厜鍩庡競媧涙潐鐭躲備粬鏄姝ょ殑鍠滄榪欓噷鐨勫ぉ姘斾互鑷翠簬鎯充竴鐢熼兘浣忓湪榪欓噷銆備粬鍦?騫寸駭鏃跺紑濮嬬紪紼嬶紝閭f椂鐢ㄧ殑鐢佃剳鏄疉pple //e銆?995騫達紝鍦?UCLA 鑾峰緱鏁板瀛﹀+瀛︿綅錛岄殢鍚庡湪Symantec 鍏徃鍋?QA 宸ョ▼甯堬紝鍦?Norton AntiVirus 緇勫伐浣溿備粬鑷浜?Windows 鍜?MFC 緙栫▼銆?999-2000騫達紝浠栬璁″茍瀹炵幇浜?Norton AntiVirus 鐨勬柊鐣岄潰銆傘<BR>銆銆Michael 鐜板湪鍦?Napster錛堜竴涓彁渚涘湪綰胯闃呴煶涔愭湇鍔$殑鍏徃錛夊仛寮鍙戝伐浣滐紝浠栬繕寮鍙戜簡UltraBar錛屼竴涓狪E宸ュ叿鏍忔彃浠訛紝瀹冨彲浠ヤ嬌緗戠粶鎼滅儲鏇村姞瀹規槗錛岀粰浜?googlebar 浠ユ矇閲嶆墦鍑伙紱浠栬繕寮鍙戜簡 CodeProject SearchBar錛涗笌浜哄叡鍚屽垱寤轟簡 Zabersoft 鍏徃錛岃鍏徃鍦ㄦ礇鏉夌煻鍜屼腹楹︾殑 Odense 閮借鏈夊姙浜嬪銆?BR>銆銆浠栧枩嬈㈢帺娓告垙銆傜埍鐜╃殑娓告垙鏈?pinball, bike riding錛屽伓灝旇繕鐜?PS, Dreamcasth 鍜?MAME 娓告垙銆備粬鍥犲繕浜嗚嚜宸辨浘緇忓榪囩殑璇█錛氭硶璇佹眽璇佹棩璇屾劅鍒版偛鍝銆?/TD></TR></TBODY></TABLE><BR> <DIV style="FONT-SIZE: 14px; LINE-HEIGHT: 25px"><STRONG>浣滆匓log錛?/STRONG><A id=ArticleContent1_ArticleContent1_AuthorBlogLink target=_blank>http://blog.csdn.net/lithe/</A></DIV> <DIV style="FONT-SIZE: 14px; COLOR: #900; LINE-HEIGHT: 25px"><STRONG>鐩稿叧鏂囩珷</STRONG></DIV> <TABLE id=ArticleContent1_ArticleContent1_RelatedArticles cellSpacing=0 border=0> <TBODY> <TR> <TD><A >C++瀛楃涓插畬鍏ㄦ寚寮曚箣浜?鈥斺?瀛楃涓插皝瑁呯被</A> </TD></TR> <TR> <TD><A >C++瀛楃涓插畬鍏ㄦ寚寮曚箣涓 鈥斺?Win32 瀛楃緙栫爜</A> </TD></TR> <TR> <TD><A >VC++涓繘紼嬩笌澶氳繘紼嬬鐞嗙殑鏂規硶</A> </TD></TR> <TR> <TD><A >瑙f瀽#pragma鎸囦護</A> </TD></TR> <TR> <TD><A >鐢ˋTL寤虹珛杞婚噺綰х殑COM瀵硅薄錛堜竴錛?/A> </TD></TR></TBODY></TABLE><img src ="http://m.shnenglu.com/ivenher/aggbug/773.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/ivenher/" target="_blank">鐖遍キ鐩?/a> 2005-10-21 14:27 <a href="http://m.shnenglu.com/ivenher/articles/773.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>C++瀛楃涓插畬鍏ㄦ寚寮曚箣浜?鈥斺?瀛楃涓插皝瑁呯被錛堣漿錛?/title><link>http://m.shnenglu.com/ivenher/articles/772.html</link><dc:creator>鐖遍キ鐩?/dc:creator><author>鐖遍キ鐩?/author><pubDate>Fri, 21 Oct 2005 06:25:00 GMT</pubDate><guid>http://m.shnenglu.com/ivenher/articles/772.html</guid><wfw:comment>http://m.shnenglu.com/ivenher/comments/772.html</wfw:comment><comments>http://m.shnenglu.com/ivenher/articles/772.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/ivenher/comments/commentRss/772.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/ivenher/services/trackbacks/772.html</trackback:ping><description><![CDATA[<TABLE cellPadding=4 width="100%" border=0> <TBODY> <TR> <TD height=19></TD></TR> <TR> <TD width=10></TD> <TD><SPAN id=ArticleContent1_ArticleContent1_lblContent> <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD> <P align=center><B>C++瀛楃涓插畬鍏ㄦ寚寮曚箣浜?鈥斺?瀛楃涓插皝瑁呯被<BR></B><BR><BR>鍘熻憲錛歁ichael Dunn<BR><BR>浣滆咃細<A href="mailto:cjsun@insun.hit.edu.cn"><FONT color=#4a664d>Chengjie Sun</FONT></A></P> <P><BR>鍘熸枃鍑哄錛?A target=_blank><FONT color=#4a664d>CodeProject錛歍he Complete Guide to C++ Strings, Part II</FONT></A><BR><BR><BR><FONT color=#4a664d><IMG alt="" src="http://www.vckbase.com/document/image/paragraph.gif"></FONT> <B>寮曡█</B><BR><BR>銆銆鍥犱負C璇█椋庢牸鐨勫瓧絎︿覆瀹規槗鍑洪敊涓斾笉鏄撶鐞嗭紝榛戝浠敋鑷沖埄鐢ㄥ彲鑳藉瓨鍦ㄧ殑緙撳啿鍖烘孩鍑篵ug鎶奀璇█椋庢牸鐨勫瓧絎︿覆浣滀負鏀誨嚮鐩爣錛屾墍浠ュ嚭鐜頒簡寰堝瀛楃涓插皝瑁呯被銆備笉騫哥殑鏄紝鍦ㄦ煇浜涘満鍚堜笅鎴戜滑涓嶇煡閬撹浣跨敤鍝釜瀛楃涓茬被錛屼篃涓嶇煡閬撴庢牱鎶婁竴涓狢椋庢牸鐨勫瓧絎︿覆杞崲鎴愪竴涓瓧絎︿覆灝佽綾匯?BR>銆銆榪欑瘒鏂囩珷灝嗕粙緇嶆墍鏈夊湪Win32 API, MFC, STL, WTL 鍜?Visual C++ 榪愯搴撲腑鍑虹幇鐨勫瓧絎︿覆綾誨瀷銆傛垜灝嗘弿榪版瘡涓涓被鐨勭敤娉曪紝鍛婅瘔澶у鎬庢牱鍒涘緩姣忎竴涓被鐨勫璞′互鍙婃庢牱鎶婁竴涓被杞崲鎴愬叾浠栫被銆傚彈鎺у瓧絎︿覆鍜孷isual C++ 7涓殑綾諱袱閮ㄥ垎鏄疦ish瀹屾垚鐨勩?BR>銆銆涓轟簡鏇村ソ鐨勪粠榪欑瘒鏂囩珷涓彈鐩婏紝浣犲繀欏昏鏄庣櫧涓嶅悓鐨勫瓧絎︾被鍨嬪拰緙栫爜錛岃繖浜涘唴瀹規垜鍦?FONT color=#4a664d>絎竴閮ㄥ垎</FONT>涓粙緇嶈繃銆?/P><PRE>Rule #1 of string classes</PRE> <P>銆銆浣跨敤cast鏉ュ疄鐜扮被鍨嬭漿鎹㈡槸涓嶅ソ鐨勫仛娉曪紝闄ら潪鏈夋枃妗f槑紜寚鍑鴻繖縐嶈漿鎹㈠彲浠ヤ嬌鐢ㄣ?BR>淇冧嬌鎴戝啓榪欎袱綃囨枃绔犵殑鍘熷洜鏄瓧絎︿覆綾誨瀷杞崲涓粡甯擱亣鍒扮殑涓浜涢棶棰樸傚綋鎴戜滑浣跨敤cast鎶婂瓧絎︿覆浠庣被鍨媂杞崲鍒扮被鍨媄鐨勬椂鍊欙紝鎴戜滑涓嶇煡閬撲負浠涔堜唬鐮佷笉鑳芥甯稿伐浣溿傚悇縐嶅悇鏍風殑瀛楃涓茬被鍨嬶紝灝ゅ叾鏄疊STR錛屽嚑涔庢病鏈夊湪浠諱綍涓涓湴鏂圭殑鏂囨。涓鏄庣‘鐨勬寚鍑哄彲浠ョ敤cast鏉ュ疄鐜扮被鍨嬭漿鎹€傛墍浠ユ垜鎯充竴浜涗漢鍙兘浼氫嬌鐢╟ast鏉ュ疄鐜扮被鍨嬭漿鎹㈠茍甯屾湜榪欑杞崲鑳藉姝e父宸ヤ綔銆?BR>銆銆闄ら潪婧愬瓧絎︿覆鏄竴涓鏄庣‘鎸囨槑鏀寔杞崲鎿嶄綔絎︾殑瀛楃涓插寘瑁呯被錛屽惁鍒檆ast涓嶅瀛楃涓插仛浠諱綍杞崲銆傚甯擱噺瀛楃涓蹭嬌鐢╟ast涓嶄細璧峰埌浠諱綍浣滅敤錛屾墍浠ヤ笅闈㈢殑浠g爜錛?</P><PRE>void SomeFunc ( LPCWSTR widestr ); main() { SomeFunc ( (LPCWSTR) "C:\\foo.txt" ); // WRONG! } </PRE>銆銆鑲畾浼氬け璐ャ傚畠鍙互琚紪璇戯紝鍥犱負cast鎿嶄綔浼氭挙娑堢紪璇戝櫒鐨勭被鍨嬫鏌ャ備絾鏄紝緙栬瘧鍙互閫氳繃騫朵笉鑳借鏄庝唬鐮佹槸姝g‘鐨勩?BR>銆銆鍦ㄤ笅闈㈢殑渚嬪瓙涓紝鎴戝皢浼氭寚鏄巆ast鍦ㄤ粈涔堟椂鍊欎嬌鐢ㄦ槸鍚堟硶鐨勩?PRE>C-style strings and typedefs</PRE> <P>銆銆姝e鎴戝湪絎竴閮ㄥ垎涓彁鍒扮殑錛寃indows APIs 鏄敤TCHARs鏉ュ畾涔夌殑錛屽湪緙栬瘧鏃訛紝瀹冨彲浠ユ牴鎹綘鏄惁瀹氫箟_MBCS鎴栬卂UNICODE琚紪璇戞垚MBCS鎴栬匲nicode瀛楃銆備綘鍙互鍙傜湅絎竴閮ㄥ垎涓TCHAR鐨勫畬鏁存弿榪幫紝榪欓噷涓轟簡鏂逛究錛屾垜鍒楀嚭浜嗗瓧絎︾殑typedefs</P> <TABLE id=AutoNumber1 style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=4 cellPadding=4 width="90%" bgColor=#ffffff border=1> <TBODY> <TR> <TD align=middle width="19%"><B>Type</B></TD> <TD align=middle width="81%"><B>Meaning</B></TD></TR> <TR> <TD align=middle width="19%">WCHAR</TD> <TD align=middle width="81%">Unicode character (wchar_t)</TD></TR> <TR> <TD align=middle width="19%">TCHAR</TD> <TD align=middle width="81%">MBCS or Unicode character, depending on preprocessor settings</TD></TR> <TR> <TD align=middle width="19%">LPSTR</TD> <TD align=middle width="81%"> string of char (char*)</TD></TR> <TR> <TD align=middle width="19%">LPCSTR</TD> <TD align=middle width="81%">constant string of char (const char*)</TD></TR> <TR> <TD align=middle width="19%">LPWSTR</TD> <TD align=middle width="81%"> string of WCHAR (WCHAR*)</TD></TR> <TR> <TD align=middle width="19%">LPCWSTR</TD> <TD align=middle width="81%"> constant string of WCHAR (const WCHAR*)</TD></TR> <TR> <TD align=middle width="19%">LPTSTR</TD> <TD align=middle width="81%"> string of TCHAR (TCHAR*)</TD></TR> <TR> <TD align=middle width="19%">LPCTSTR</TD> <TD align=middle width="81%"> constant string of TCHAR (const TCHAR*)</TD></TR></TBODY></TABLE> <P>銆銆涓涓鍔犵殑瀛楃綾誨瀷鏄疧LETYPE銆傚畠琛ㄧず鑷姩鍖栨帴鍙o紙濡倃ord鎻愪緵鐨勫彲浠ヤ嬌浣犳搷浣滄枃妗g殑鎺ュ彛錛変腑浣跨敤鐨勫瓧絎︾被鍨嬨傝繖縐嶇被鍨嬩竴鑸瀹氫箟鎴恮char_t錛岀劧鑰屽鏋滀綘瀹氫箟浜哋LE2ANSI棰勫鐞嗘爣璁幫紝OLECHAR灝嗕細琚畾涔夋垚char綾誨瀷銆傛垜鐭ラ亾鐜板湪宸茬粡娌℃湁鐞嗙敱瀹氫箟OLE2ANSI錛堜粠MFC3浠ュ悗錛屽井杞凡緇忎笉浣跨敤瀹冧簡錛夛紝鎵浠ヤ粠鐜板湪璧鋒垜灝嗘妸OLECHAR褰撲綔Unicode瀛楃銆?BR>榪欓噷緇欏嚭浣犲皢浼氱湅鍒扮殑涓浜汷LECHAR鐩稿叧鐨則ypedefs錛?/P> <TABLE id=AutoNumber2 style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=3 cellPadding=3 width="71%" bgColor=#ffffff border=1> <TBODY> <TR> <TD align=middle width="18%"><B>Type</B></TD> <TD align=middle width="82%"><B>Meaning</B></TD></TR> <TR> <TD align=middle width="18%">OLECHAR </TD> <TD align=middle width="82%">Unicode character (wchar_t)</TD></TR> <TR> <TD align=middle width="18%">LPOLESTR</TD> <TD align=middle width="82%"> string of OLECHAR (OLECHAR*)</TD></TR> <TR> <TD align=middle width="18%">LPCOLESTR </TD> <TD align=middle width="82%">constant string of OLECHAR (const OLECHAR*)</TD></TR></TBODY></TABLE> <P>銆銆榪樻湁涓や釜鐢ㄤ簬鍖呭洿瀛楃涓插拰瀛楃甯擱噺鐨勫畯瀹氫箟錛屽畠浠彲浠ヤ嬌鍚屾牱鐨勪唬鐮佽鐢ㄤ簬MBCS鍜孶nicode builds 錛?/P> <TABLE id=AutoNumber3 style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=3 cellPadding=3 width="88%" bgColor=#ffffff border=1> <TBODY> <TR> <TD align=middle width="14%"><B>Type </B></TD> <TD align=middle width="86%"><B>Meaning</B></TD></TR> <TR> <TD align=middle width="14%">_T(x)</TD> <TD align=middle width="86%">Prepends L to the literal in Unicode builds.</TD></TR> <TR> <TD align=middle width="14%">OLESTR(x)</TD> <TD align=middle width="86%">Prepends L to the literal to make it an LPCOLESTR. </TD></TR></TBODY></TABLE> <P>銆銆鍦ㄦ枃妗f垨渚嬬▼涓紝浣犺繕浼氱湅鍒板ソ澶歘T鐨勫彉浣撱傛湁鍥涗釜絳変環鐨勫畯瀹氫箟錛屽畠浠槸TEXT, _TEXT, __TEXT鍜宊_T錛屽畠浠兘璧峰悓鏍風殑鍋氱敤銆?BR><BR><IMG alt="" src="http://www.vckbase.com/document/image/paragraph.gif"> <B>COM 涓殑瀛楃涓?鈥斺?BSTR 鍜?VARIANT</B><BR><BR>銆銆寰堝鑷姩鍖栧拰COM鎺ュ彛浣跨敤BSTR鏉ュ畾涔夊瓧絎︿覆銆侭STRs涓湁鍑犱釜"闄烽槺"錛屾墍浠ヨ繖閲屾垜鐢ㄥ崟鐙殑閮ㄥ垎鏉ヨ鏄庡畠銆?BR>銆銆BSTR 鏄?Pascal-style 瀛楃涓詫紙瀛楃涓查暱搴﹁鏄庣‘鎸囧嚭錛夊拰C-style瀛楃涓詫紙瀛楃涓茬殑闀垮害瑕侀氳繃瀵繪壘緇撴潫絎︽潵璁$畻錛夌殑娣峰悎浜х墿銆備竴涓狟STR鏄竴涓猆nicode瀛楃涓詫紝瀹冪殑闀垮害鏄鍏堣冭檻鐨勶紝騫朵笖瀹冭繕鏈変竴涓?瀛楃浣滀負緇撴潫鏍囪銆備笅闈㈡槸涓涓狟STR鐨勭ず渚嬶細<BR><BR>銆</P> <TABLE id=AutoNumber4 style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=3 cellPadding=3 width="73%" bgColor=#ffffff border=1> <TBODY> <TR> <TD align=middle width="20%">06 00 00 00</TD> <TD align=middle width="20%">42 00</TD> <TD align=middle width="20%">6F 00</TD> <TD align=middle width="20%">62 00</TD> <TD align=middle width="20%">00 00</TD></TR> <TR> <TD align=middle width="20%">--length--</TD> <TD align=middle width="20%">B</TD> <TD align=middle width="20%">o</TD> <TD align=middle width="20%">b</TD> <TD align=middle width="20%">EOS</TD></TR></TBODY></TABLE> <P>銆銆娉ㄦ剰瀛楃涓茬殑闀垮害鏄浣曡鍔犲埌瀛楃涓叉暟鎹腑鐨勩傞暱搴︽槸DWORD綾誨瀷鐨勶紝淇濆瓨浜嗗瓧絎︿覆涓寘鍚殑瀛楄妭鏁幫紝浣嗕笉鍖呮嫭緇撴潫鏍囪銆傚湪榪欎釜渚嬪瓙涓紝"Bob"鍖呭惈3涓猆nicode瀛楃錛堜笉鍖呮嫭緇撴潫絎︼級錛屾誨叡6涓瓧鑺傘傚瓧絎︿覆鐨勯暱搴﹁棰勫厛瀛樺偍濂斤紝浠ヤ究褰撲竴涓狟STR鍦ㄨ繘紼嬫垨鑰呰綆楁満涔嬮棿琚紶閫掓椂錛孋OM搴撶煡閬撳灝戞暟鎹渶瑕佷紶閫併傦紙鍙︿竴鏂歸潰錛屼竴涓狟STR鑳藉瀛樺偍浠繪剰鏁版嵁鍧楋紝鑰屼笉浠呬粎鏄瓧絎︼紝瀹冭繕鍙互鍖呭惈宓屽叆鍦ㄦ暟鎹腑鐨?瀛楃銆傜劧鑰岋紝鐢變簬榪欑瘒鏂囩珷鐨勭洰鐨勶紝鎴戝皢涓嶈冭檻閭d簺鎯呭喌錛夈?BR>銆銆鍦?C++ 涓紝涓涓?BSTR 瀹為檯涓婂氨鏄竴涓寚鍚戝瓧絎︿覆涓涓涓瓧絎︾殑鎸囬拡銆傚畠鐨勫畾涔夊涓嬶細 </P><PRE>BSTR bstr = NULL; bstr = SysAllocString ( L"Hi Bob!" ); if ( NULL == bstr ) // out of memory error // Use bstr here... SysFreeString ( bstr ); </PRE>鑷劧鐨勶紝鍚勭鍚勬牱鐨凚STR灝佽綾諱負浣犲疄鐜板唴瀛樼鐞嗐?BR>銆銆鍙﹀涓涓敤鍦ㄨ嚜鍔ㄥ寲鎺ュ彛涓殑鍙橀噺綾誨瀷鏄疺ARIANT銆傚畠琚敤鏉ュ湪鏃犵被鍨嬶紙typeless錛夎璦錛屽Jscript鍜孷BScript錛屾潵浼犻掓暟鎹備竴涓猇ARIANT鍙兘鍚湁寰堝涓嶅悓綾誨瀷鐨勬暟鎹紝渚嬪long鍜孖Dispatch*銆傚綋涓涓猇ARIANT鍖呭惈涓涓瓧絎︿覆錛屽瓧絎︿覆琚瓨鎴愪竴涓狟STR銆傚綋鎴戝悗闈㈣鍒癡ARIANT灝佽綾繪椂錛屾垜浼氬VARIANT澶氫簺浠嬬粛銆?BR><BR><IMG alt="" src="http://www.vckbase.com/document/image/paragraph.gif"> <B>瀛楃涓插皝瑁呯被</B><BR><BR>銆銆鍒扮洰鍓嶄負姝紝鎴戝凡緇忎粙緇嶄簡鍚勭鍚勬牱鐨勫瓧絎︿覆銆備笅闈紝鎴戝皢璇存槑灝佽綾匯傚浜庢瘡涓皝瑁呯被錛屾垜灝嗗睍紺烘庢牱鍒涘緩涓涓璞″強鎬庢牱鎶婂畠杞崲鎴愪竴涓狢璇█椋庢牸鐨勫瓧絎︿覆鎸囬拡銆侰璇█椋庢牸鐨勫瓧絎︿覆鎸囬拡瀵逛簬API鐨勮皟鐢紝鎴栬呭垱寤轟竴涓笉鍚岀殑瀛楃涓茬被瀵硅薄緇忓父鏄繀闇鐨勩傛垜涓嶄細浠嬬粛瀛楃涓茬被鎻愪緵鐨勫叾浠栨搷浣滐紝姣斿鎺掑簭鍜屾瘮杈冦?BR>銆銆閲嶅涓閬嶏紝闄ら潪浣犵‘鍒囩殑鏄庣櫧緇撴灉浠g爜灝嗕細鍋氫粈涔堬紝鍚﹀垯涓嶈鐩茬洰鍦頒嬌鐢╟ast鏉ュ疄鐜扮被鍨嬭漿鎹€?BR><BR><IMG alt="" src="http://www.vckbase.com/document/image/paragraph.gif"> <B>CRT鎻愪緵鐨勭被</B><BR><BR><B><I>_bstr_t</I></B><BR>銆銆_bstr_t鏄竴涓BSTR鐨勫畬鏁村皝瑁呯被錛屽疄闄呬笂瀹冮殣钘忎簡搴曞眰鐨凚STR銆傚畠鎻愪緵鍚勭鏋勯犲嚱鏁板拰鎿嶄綔絎︽潵璁塊棶搴曞眰鐨凜璇█椋庢牸鐨勫瓧絎︿覆銆傜劧鑰岋紝_bstr_t鍗存病鏈夎闂瓸STR鏈韓鐨勬搷浣滅錛屾墍浠ヤ竴涓猒bstr_t綾誨瀷鐨勫瓧絎︿覆涓嶈兘琚綔涓鴻緭鍑哄弬鏁頒紶緇欎竴涓狢OM鏂規硶銆傚鏋滀綘闇瑕佷竴涓狟STR*鍙傛暟錛屼嬌鐢ˋTL綾籆ComBSTR鏄瘮杈冨鏄撶殑鏂瑰紡銆?BR>銆銆涓涓猒bstr_t瀛楃涓茶兘澶熶紶緇欎竴涓帴鏀跺弬鏁扮被鍨嬩負BSTR鐨勫嚱鏁幫紝鍙槸鍥犱負涓嬪垪3涓潯浠跺悓鏃舵弧瓚熾傞鍏堬紝_bstr_t鏈変竴涓悜wchar_t*杞崲鐨勮漿鎹㈠嚱鏁幫紱鍏舵錛屽緙栬瘧鍣ㄨ岃█錛屽洜涓築STR鐨勫畾涔夛紝wchar_t*鍜孊STR鏈夊悓鏍風殑鍚箟錛涚涓夛紝_bstr_t鍐呴儴鍚湁鐨剋char_t*鎸囧悜涓鐗囨寜BSTR鐨勫艦寮忓瓨鍌ㄦ暟鎹殑鍐呭瓨銆傛墍浠ワ紝鍗充嬌娌℃湁鏂囨。璇存槑錛宊bstr_t鍙互杞崲鎴怋STR錛岃繖縐嶈漿鎹粛鐒跺彲浠ユ甯歌繘琛屻?<PRE>// Constructing _bstr_t bs1 = "char string"; // construct from a LPCSTR _bstr_t bs2 = L"wide char string"; // construct from a LPCWSTR _bstr_t bs3 = bs1; // copy from another _bstr_t _variant_t v = "Bob"; _bstr_t bs4 = v; // construct from a _variant_t that has a string // Extracting data LPCSTR psz1 = bs1; // automatically converts to MBCS string LPCSTR psz2 = (LPCSTR) bs1; // cast OK, same as previous line LPCWSTR pwsz1 = bs1; // returns the internal Unicode string LPCWSTR pwsz2 = (LPCWSTR) bs1; // cast OK, same as previous line BSTR bstr = bs1.copy(); // copies bs1, returns it as a BSTR // ... SysFreeString ( bstr ); </PRE>銆銆娉ㄦ剰_bstr_t涔熸彁渚沜har*鍜寃char_t*涔嬮棿鐨勮漿鎹㈡搷浣滅銆傝繖鏄竴涓煎緱鎬鐤戠殑璁捐錛屽洜涓哄嵆浣垮畠浠槸闈炲父閲忓瓧絎︿覆鎸囬拡錛屼綘涔熶竴瀹氫笉鑳戒嬌鐢ㄨ繖浜涙寚閽堝幓淇敼瀹冧滑鎸囧悜鐨勭紦鍐插尯鐨勫唴瀹癸紝鍥犱負閭e皢鐮村潖鍐呴儴鐨凚STR緇撴瀯銆?BR><BR><B><I>_variant_t</I></B><BR>銆銆_variant_t鏄竴涓VARIANT鐨勫畬鏁村皝瑁咃紝瀹冩彁渚涘緢澶氭瀯閫犲嚱鏁板拰杞崲鍑芥暟鏉ユ搷浣滀竴涓猇ARIANT鍙兘鍖呭惈鐨勫ぇ閲忕殑鏁版嵁綾誨瀷銆傝繖閲岋紝鎴戝皢鍙粙緇嶄笌瀛楃涓叉湁鍏崇殑鎿嶄綔銆?<PRE>// Constructing _variant_t v1 = "char string"; // construct from a LPCSTR _variant_t v2 = L"wide char string"; // construct from a LPCWSTR _bstr_t bs1 = "Bob"; _variant_t v3 = bs1; // copy from a _bstr_t object // Extracting data _bstr_t bs2 = v1; // extract BSTR from the VARIANT _bstr_t bs3 = (_bstr_t) v1; // cast OK, same as previous line </PRE><B>娉ㄦ剰</B>錛?BR>銆銆濡傛灉綾誨瀷杞崲涓嶈兘琚墽琛岋紝_variant_t鏂規硶鑳藉鎶涘嚭寮傚父錛屾墍浠ュ簲璇ュ噯澶囨崟鑾穇com_error寮傚父銆?BR><BR><B>榪橀渶瑕佹敞鎰忕殑鏄?/B>錛?BR>銆銆娌℃湁浠庝竴涓猒variant_t鍙橀噺鍒頒竴涓狹BCS瀛楃涓茬殑鐩存帴杞崲銆備綘闇瑕佸垱寤轟竴涓復鏃剁殑_bstr_t鍙橀噺錛屼嬌鐢ㄦ彁渚沀nicode鍒癕BCS杞崲鐨勫彟涓涓瓧絎︿覆綾繪垨鑰呬嬌鐢ㄤ竴涓狝TL杞崲瀹忋?BR>銆銆涓嶅儚_bstr_t錛屼竴涓猒variant_t鍙橀噺鍙互琚洿鎺ヤ綔涓哄弬鏁頒紶閫掔粰涓涓狢OM鏂規硶銆俖variant_t<BR>銆銆緇ф壙鑷猇ARIANT綾誨瀷錛屾墍浠ヤ紶閫掍竴涓猒variant_t鏉ヤ唬鏇縑ARIANT鍙橀噺鏄疌++璇█鎵鍏佽鐨勩?BR><BR><IMG alt="" src="http://www.vckbase.com/document/image/paragraph.gif"> <B>STL 綾?/B><BR>銆銆STL鍙湁涓涓瓧絎︿覆綾伙紝basic_string銆備竴涓猙asic_string綆$悊涓涓互0鍋氱粨鏉熺鐨勫瓧絎︿覆鏁扮粍銆傚瓧絎︾殑綾誨瀷鏄痓asic_string妯¤埇鐨勫弬鏁般傛葷殑鏉ヨ錛屼竴涓猙asic_string綾誨瀷鐨勫彉閲忓簲璇ヨ褰撲綔涓嶉忔槑鐨勫璞°備綘鍙互寰楀埌涓涓寚鍚戝唴閮ㄧ紦鍐插尯鐨勫彧璇繪寚閽堬紝浣嗘槸浠諱綍鍐欐搷浣滃繀欏諱嬌鐢╞asic_string鐨勬搷浣滅鍜屾柟娉曘?BR>銆銆basic_string鏈変袱涓瀹氫箟鐨勭被鍨嬶細鍖呭惈char鐨剆tring綾誨瀷鍜屽寘鍚玾char_t鐨剋string綾誨瀷銆傝繖閲屾病鏈夊唴緗殑鍖呭惈TCHAR鐨勭被鍨嬶紝浣嗘槸浣犲彲浠ヤ嬌鐢ㄤ笅闈㈠垪鍑虹殑浠g爜鏉ュ疄鐜般?<PRE>// Specializations typedef basic_string<TCHAR></TCHAR> tstring; // string of TCHARs // Constructing string str = "char string"; // construct from a LPCSTR wstring wstr = L"wide char string"; // construct from a LPCWSTR tstring tstr = _T("TCHAR string"); // construct from a LPCTSTR // Extracting data LPCSTR psz = str.c_str(); // read-only pointer to str''s buffer LPCWSTR pwsz = wstr.c_str(); // read-only pointer to wstr''s buffer LPCTSTR ptsz = tstr.c_str(); // read-only pointer to tstr''s buffer </PRE>銆銆涓嶅儚_bstr_t錛屼竴涓猙asic_string鍙橀噺涓嶈兘鍦ㄥ瓧絎﹂泦涔嬮棿鐩存帴杞崲銆傜劧鑰岋紝浣犲彲浠ヤ紶閫掔敱c_str()榪斿洖鐨勬寚閽堢粰鍙﹀涓涓被鐨勬瀯閫犲嚱鏁幫紙濡傛灉榪欎釜綾葷殑鏋勯犲嚱鏁版帴鍙楄繖縐嶅瓧絎︾被鍨嬶級銆備緥濡傦細 <PRE>// Example, construct _bstr_t from basic_string _bstr_t bs1 = str.c_str(); // construct a _bstr_t from a LPCSTR _bstr_t bs2 = wstr.c_str(); // construct a _bstr_t from a LPCWSTR </PRE><IMG alt="" src="http://www.vckbase.com/document/image/paragraph.gif"> <B>ATL 綾?/B><BR><BR><B><I>CComBSTR</I></B><BR>銆銆CComBSTR 鏄?ATL 涓殑 BSTR 灝佽綾伙紝瀹冨湪鏌愪簺鎯呭喌涓嬫瘮_bstr_t鏈夌敤鐨勫銆傛渶寮曚漢娉ㄦ剰鐨勬槸CComBSTR鍏佽璁塊棶搴曞眰鐨凚STR錛岃繖鎰忓懗鐫浣犲彲浠ヤ紶閫掍竴涓狢ComBSTR瀵硅薄緇機OM鐨勬柟娉曘侰ComBSTR瀵硅薄鑳藉鏇夸綘鑷姩鐨勭鐞咮STR鐨勫唴瀛樸備緥濡傦紝鍋囪浣犳兂璋冪敤涓嬮潰榪欎釜鎺ュ彛鐨勬柟娉曪細 <PRE>// Sample interface: struct IStuff : public IUnknown { // Boilerplate COM stuff omitted... STDMETHOD(SetText)(BSTR bsText); STDMETHOD(GetText)(BSTR* pbsText); }; </PRE>銆銆CComBSTR鏈変竴涓搷浣滅--BSTR鏂規硶錛屾墍浠ュ畠鑳界洿鎺ヨ浼犵粰SetText()鍑芥暟銆傝繕鏈夊彟澶栦竴涓搷浣?-&錛岃繖涓搷浣滅榪斿洖涓涓狟STR*銆傛墍浠ワ紝浣犲彲浠ュ涓涓狢ComBSTR瀵硅薄浣跨敤&鎿嶄綔絎︼紝鐒跺悗鎶婂畠浼犵粰闇瑕丅STR*鍙傛暟鐨勫嚱鏁般?<PRE>CComBSTR bs1; CComBSTR bs2 = "new text"; pStuff->GetText ( &bs1 ); // ok, takes address of internal BSTR pStuff->SetText ( bs2 ); // ok, calls BSTR converter pStuff->SetText ( (BSTR) bs2 ); // cast ok, same as previous line </PRE>銆銆CComBSTR鏈夊拰_bstr_t鐩鎬技鐨勬瀯閫犲嚱鏁幫紝鐒惰屽嵈娌℃湁鍐呯疆鐨勫悜MBCS瀛楃涓茶漿鎹㈢殑鍑芥暟銆傚洜姝わ紝浣犻渶瑕佷嬌鐢ㄤ竴涓狝TL杞崲瀹忋?<PRE>// Constructing CComBSTR bs1 = "char string"; // construct from a LPCSTR CComBSTR bs2 = L"wide char string"; // construct from a LPCWSTR CComBSTR bs3 = bs1; // copy from another CComBSTR CComBSTR bs4; bs4.LoadString ( IDS_SOME_STR ); // load string from string table // Extracting data BSTR bstr1 = bs1; // returns internal BSTR, but don''t modify it! BSTR bstr2 = (BSTR) bs1; // cast ok, same as previous line BSTR bstr3 = bs1.Copy(); // copies bs1, returns it as a BSTR BSTR bstr4; bstr4 = bs1.Detach(); // bs1 no longer manages its BSTR // ... SysFreeString ( bstr3 ); SysFreeString ( bstr4 ); </PRE>銆銆娉ㄦ剰鍦ㄤ笂涓緥瀛愪腑浣跨敤浜咲etach()鏂規硶銆傝皟鐢ㄨ繖涓柟娉曞悗錛孋ComBSTR瀵硅薄涓嶅啀綆$悊瀹冪殑BSTR瀛楃涓叉垨鑰呰瀹冨搴旂殑鍐呭瓨銆傝繖灝辨槸bstr4闇瑕佽皟鐢⊿ysFreeString()鐨勫師鍥犮?BR>銆銆鍋氫竴涓ˉ鍏呰鏄庯細閲嶈澆鐨?amp;鎿嶄綔絎︽剰鍛崇潃鍦ㄤ竴浜汼TL瀹瑰櫒涓綘涓嶈兘鐩存帴浣跨敤CComBSTR鍙橀噺錛屾瘮濡俵ist銆傚鍣ㄨ姹?amp;鎿嶄綔絎﹁繑鍥炰竴涓寚鍚戝鍣ㄥ寘鍚殑綾葷殑鎸囬拡錛屼絾鏄CComBSTR鍙橀噺浣跨敤&鎿嶄綔絎﹁繑鍥炵殑鏄疊STR*錛岃屼笉鏄疌ComBSTR*銆傜劧鑰岋紝鏈変竴涓狝TL綾誨彲浠ヨВ鍐寵繖涓棶棰橈紝榪欎釜綾繪槸CAdapt銆備緥濡傦紝浣犲彲浠ヨ繖鏍峰0鏄庝竴涓狢ComBSTR鐨刲ist錛?PRE>std::list< CAdapt<CCOMBSTR></CCOMBSTR> > bstr_list;</PRE> <P>銆銆CAdapt鎻愪緵瀹瑰櫒鎵闇瑕佺殑鎿嶄綔絎︼紝浣嗚繖浜涙搷浣滅瀵逛綘鐨勪唬鐮佹槸閫忔槑鐨勩備綘鍙互鎶婁竴涓猙str_list褰撲綔涓涓狢ComBSTR鐨刲ist鏉ヤ嬌鐢ㄣ?BR><BR><B><I>CComVariant</I></B><BR>銆銆CComVariant鏄疺ARIANT鐨勫皝瑁呯被銆傜劧鑰岋紝涓嶅儚_variant_t錛屽湪CComVariant涓璙ARIANT娌℃湁琚殣钘忋備簨瀹炰笂浣犻渶瑕佺洿鎺ヨ闂甐ARIANT鐨勬垚鍛樸侰ComVariant鎻愪緵浜嗗緢澶氭瀯閫犲嚱鏁版潵瀵筕ARIANT鑳藉鍖呭惈鐨勫縐嶇被鍨嬭繘琛屽鐞嗐傝繖閲岋紝鎴戝皢鍙粙緇嶅拰瀛楃涓茬浉鍏崇殑鎿嶄綔銆?</P><PRE>// Constructing CComVariant v1 = "char string"; // construct from a LPCSTR CComVariant v2 = L"wide char string"; // construct from a LPCWSTR CComBSTR bs1 = "BSTR bob"; CComVariant v3 = (BSTR) bs1; // copy from a BSTR // Extracting data CComBSTR bs2 = v1.bstrVal; // extract BSTR from the VARIANT </PRE>銆銆涓嶅儚_variant_t錛岃繖閲屾病鏈夋彁渚涢拡瀵筕ARIANT鍖呭惈鐨勫悇縐嶇被鍨嬬殑杞崲鎿嶄綔絎︺傛濡備笂闈粙緇嶇殑錛屼綘蹇呴』鐩存帴璁塊棶VARIANT鐨勬垚鍛樺茍涓旂‘淇濊繖涓猇ARIANT鍙橀噺淇濆瓨鐫浣犳湡鏈涚殑綾誨瀷銆傚鏋滀綘闇瑕佹妸涓涓狢ComVariant綾誨瀷鐨勬暟鎹漿鎹㈡垚涓涓狟STR綾誨瀷鐨勬暟鎹紝浣犲彲浠ヨ皟鐢–hangeType()鏂規硶銆?<PRE>CComVariant v4 = ... // Init v4 from somewhere CComBSTR bs3; if ( SUCCEEDED( v4.ChangeType ( VT_BSTR ) )) bs3 = v4.bstrVal; </PRE>銆銆鍍廮variant_t涓鏍鳳紝CComVariant涔熸病鏈夋彁渚涘悜MBCS瀛楃涓茶漿鎹㈢殑杞崲鎿嶄綔銆備綘闇瑕佸垱寤轟竴涓猒bstr_t綾誨瀷鐨勪腑闂村彉閲忥紝浣跨敤鎻愪緵浠嶶nicode鍒癕BCS杞崲鐨勫彟涓涓瓧絎︿覆綾伙紝鎴栬呬嬌鐢ㄤ竴涓狝TL鐨勮漿鎹㈠畯銆?BR><BR><TCHAR></TCHAR><IMG alt="" src="http://www.vckbase.com/document/image/paragraph.gif"> <B>ATL杞崲瀹?/B><BR><BR>銆銆ATL錛氳漿鎹㈠畯鏄悇縐嶅瓧絎︾紪鐮佷箣闂磋繘琛岃漿鎹㈢殑涓縐嶅緢鏂逛究鐨勬柟寮忥紝鍦ㄥ嚱鏁拌皟鐢ㄦ椂錛屽畠浠樉寰楅潪甯告湁鐢ㄣ侫TL杞崲瀹忕殑鍚嶇О鏄牴鎹笅闈㈢殑妯″紡鏉ュ懡鍚嶇殑[婧愮被鍨媇2[鏂扮被鍨媇鎴栬匸婧愮被鍨媇2C[鏂扮被鍨媇銆傛嵁鏈夌浜岀褰㈠紡鐨勫悕瀛楃殑瀹忕殑杞崲緇撴灉鏄父閲忔寚閽堬紙瀵瑰簲鍚嶅瓧涓殑"C"錛夈傚悇縐嶇被鍨嬬殑綆縐板涓嬶細<PRE>A: MBCS string, char* (A for ANSI) W: Unicode string, wchar_t* (W for wide) T: TCHAR string, TCHAR* OLE: OLECHAR string, OLECHAR* (in practice, equivalent to W) BSTR: BSTR (used as the destination type only)</PRE> <P>銆銆鎵浠ワ紝W2A()瀹忔妸涓涓猆nicode瀛楃涓茶漿鎹㈡垚涓涓狹BCS瀛楃涓層俆2CW()瀹忔妸涓涓猅CHAR瀛楃涓茶漿杞垚涓涓猆nicode瀛楃涓插父閲忋?BR>銆銆涓轟簡浣跨敤榪欎簺瀹忥紝闇瑕佸厛鍖呭惈atlconv.h澶存枃浠躲備綘鐢氳嚦鍙互鍦ㄩ潪ATL宸ョ▼涓寘鍚繖涓ご鏂囦歡鏉ヤ嬌鐢ㄥ叾涓畾涔夌殑瀹忥紝鍥犱負榪欎釜澶存枃浠剁嫭绔嬩簬ATL涓殑鍏朵粬閮ㄥ垎錛屼笉闇瑕佷竴涓猒Module鍏ㄥ眬鍙橀噺銆傚綋浣犲湪涓涓嚱鏁頒腑浣跨敤杞崲瀹忔椂錛岄渶瑕佹妸USES_CONVERSION瀹忔斁鍦ㄥ嚱鏁扮殑寮澶淬傚畠瀹氫箟浜嗚漿鎹㈠畯鎵闇鐨勪竴浜涘眬閮ㄥ彉閲忋?BR>銆銆褰撹漿鎹㈢殑鐩殑綾誨瀷鏄櫎浜咮STR浠ュ鐨勫叾浠栫被鍨嬫椂錛岃杞崲鐨勫瓧絎︿覆鏄瓨鍦ㄦ爤涓殑銆傛墍浠ワ紝濡傛灉浣犳兂璁╁瓧絎︿覆鐨勭敓鍛藉懆鏈熸瘮褰撳墠鐨勫嚱鏁伴暱錛屼綘闇瑕佹妸榪欎釜瀛楃涓叉嫹璐濆埌鍏朵粬鐨勫瓧絎︿覆綾諱腑銆傚綋鐩殑綾誨瀷鏄疊STR鏃訛紝鍐呭瓨涓嶄細鑷姩琚噴鏀撅紝浣犲繀欏繪妸榪斿洖鍊艱祴緇欎竴涓狟STR鍙橀噺鎴栬呬竴涓狟STR灝佽綾諱互閬垮厤鍐呭瓨娉勬紡銆?BR>銆銆涓嬮潰鏄竴浜涘悇縐嶈漿鎹㈠畯鐨勪嬌鐢ㄤ緥瀛愶細 </P><PRE>// Functions taking various strings: void Foo ( LPCWSTR wstr ); void Bar ( BSTR bstr ); // Functions returning strings: void Baz ( BSTR* pbstr ); #include <ATLCONV.H></ATLCONV.H> main() { using std::string; USES_CONVERSION; // declare locals used by the ATL macros // Example 1: Send an MBCS string to Foo() LPCSTR psz1 = "Bob"; string str1 = "Bob"; Foo ( A2CW(psz1) ); Foo ( A2CW(str1.c_str()) ); // Example 2: Send a MBCS and Unicode string to Bar() LPCSTR psz2 = "Bob"; LPCWSTR wsz = L"Bob"; BSTR bs1; CComBSTR bs2; bs1 = A2BSTR(psz2); // create a BSTR bs2.Attach ( W2BSTR(wsz) ); // ditto, assign to a CComBSTR Bar ( bs1 ); Bar ( bs2 ); SysFreeString ( bs1 ); // free bs1 memory // No need to free bs2 since CComBSTR will do it for us. // Example 3: Convert the BSTR returned by Baz() BSTR bs3 = NULL; string str2; Baz ( &bs3 ); // Baz() fills in bs3 str2 = W2CA(bs3); // convert to an MBCS string SysFreeString ( bs3 ); // free bs3 memory } </PRE>銆銆姝e浣犳墍鐪嬭鐨勶紝褰撲綘鏈変竴涓拰鍑芥暟鎵闇鐨勫弬鏁扮被鍨嬩笉鍚岀殑瀛楃涓叉椂錛屼嬌鐢ㄨ繖浜涜漿鎹㈠畯鏄潪甯告柟渚跨殑銆?<BR><BR><TCHAR></TCHAR><IMG alt="" src="http://www.vckbase.com/document/image/paragraph.gif"> <B>MFC綾?/B><BR><BR><B><I>CString</I></B><BR>銆銆鍥犱負涓涓狹FC CString綾葷殑瀵硅薄鍖呭惈TCHAR綾誨瀷鐨勫瓧絎︼紝鎵浠ョ‘鍒囩殑瀛楃綾誨瀷鍙栧喅浜庝綘鎵瀹氫箟鐨勯澶勭悊絎﹀彿銆傚ぇ浣撴潵璇達紝CString 寰堝儚STL string錛岃繖鎰忓懗鐫浣犲繀欏繪妸瀹冨綋鎴愪笉閫忔槑鐨勫璞★紝鍙兘浣跨敤CString鎻愪緵鐨勬柟娉曟潵淇敼CString瀵硅薄銆侰String鏈変竴涓猻tring鎵涓嶅叿澶囩殑浼樼偣錛欳String鍏鋒湁鎺ユ敹MBCS鍜孶nicode涓ょ瀛楃涓茬殑鏋勯犲嚱鏁幫紝瀹冭繕鏈変竴涓狶PCTSTR杞崲絎︼紝鎵浠ヤ綘鍙互鎶奀String瀵硅薄鐩存帴浼犵粰涓涓帴鏀禠PCTSTR鐨勫嚱鏁拌屼笉闇瑕佽皟鐢╟_str()鍑芥暟銆?<PRE>// Constructing CString s1 = "char string"; // construct from a LPCSTR CString s2 = L"wide char string"; // construct from a LPCWSTR CString s3 ( '' '', 100 ); // pre-allocate a 100-byte buffer, fill with spaces CString s4 = "New window text"; // You can pass a CString in place of an LPCTSTR: SetWindowText ( hwndSomeWindow, s4 ); // Or, equivalently, explicitly cast the CString: SetWindowText ( hwndSomeWindow, (LPCTSTR) s4 ); </PRE>銆銆浣犲彲浠ヤ粠浣犵殑瀛楃涓茶〃涓杞戒竴涓瓧絎︿覆錛孋String鐨勪竴涓瀯閫犲嚱鏁板拰LoadString()鍑芥暟鍙互瀹屾垚瀹冦侳ormat()鏂規硶鑳藉浠庡瓧絎︿覆琛ㄤ腑闅忔剰鐨勮鍙栦竴涓叿鏈変竴瀹氭牸寮忕殑瀛楃涓層傘銆銆銆銆 <PRE>// Constructing/loading from string table CString s5 ( (LPCTSTR) IDS_SOME_STR ); // load from string table CString s6, s7; // Load from string table. s6.LoadString ( IDS_SOME_STR ); // Load printf-style format string from the string table: s7.Format ( IDS_SOME_FORMAT, "bob", nSomeStuff, ... ); </PRE>銆銆絎竴涓瀯閫犲嚱鏁扮湅璧鋒潵鏈夌偣濂囨紝浣嗘槸榪欏疄闄呬笂鏄枃妗h鏄庣殑瑁呭叆涓涓瓧絎︿覆鐨勬柟娉曘?娉ㄦ剰錛屽涓涓狢String鍙橀噺錛屼綘鍙互浣跨敤鐨勫敮涓鍚堟硶杞崲絎︽槸LPCTSTR銆傝漿鎹㈡垚LPTSTR錛堥潪甯擱噺鎸囬拡錛夋槸閿欒鐨勩傚吇鎴愭妸涓涓狢String鍙橀噺杞崲鎴怢PTSTR鐨勪範鎯皢浼氱粰浣犲甫鏉ヤ激瀹籌紝鍥犱負褰撲綘鐨勭▼搴忓悗鏉ュ穿婧冩椂錛屼綘鍙兘涓嶇煡閬撲負浠涔堬紝鍥犱負浣犲埌澶勯兘浣跨敤鍚屾牱鐨勪唬鐮佽岄偅鏃跺畠浠兘鎭板閥姝e父宸ヤ綔銆傛紜殑寰楀埌涓涓寚鍚戠紦鍐插尯鐨勯潪甯擱噺鎸囬拡鐨勬柟娉曟槸璋冪敤GetBuffer()鏂規硶銆備笅闈㈡槸姝g‘鐨勭敤娉曠殑涓涓緥瀛愶紝榪欐浠g爜鏄粰涓涓垪琛ㄦ帶浠朵腑鐨勯」璁懼畾鏂囧瓧錛?<PRE>CString str = _T("new text"); LVITEM item = {0}; item.mask = LVIF_TEXT; item.iItem = 1; item.pszText = (LPTSTR)(LPCTSTR) str; // WRONG! item.pszText = str.GetBuffer(0); // correct ListView_SetItem ( &item ); str.ReleaseBuffer(); // return control of the buffer to str </PRE>銆銆pszText鎴愬憳鏄竴涓狶PTSTR鍙橀噺錛屼竴涓潪甯擱噺鎸囬拡錛屽洜姝や綘闇瑕佸str璋冪敤GetBuffer()銆侴etBuffer()鐨勫弬鏁版槸浣犻渶瑕丆String涓虹紦鍐插尯鍒嗛厤鐨勬渶灝忛暱搴︺傚鏋滃洜涓烘煇浜涘師鍥狅紝浣犻渶瑕佷竴涓彲淇敼鐨勭紦鍐插尯鏉ュ瓨鏀?K TCHARs錛屼綘闇瑕佽皟鐢℅etBuffer(1024)銆傛妸0浣滀負鍙傛暟鏃訛紝GetBuffer()榪斿洖鐨勬槸鎸囧悜瀛楃涓插綋鍓嶅唴瀹圭殑鎸囬拡銆?BR>銆銆涓婇潰鍒掔嚎鐨勮鍙ュ彲浠ヨ緙栬瘧錛屽湪榪欑鎯呭喌涓嬶紝鐢氳嚦鍙互姝e父璧蜂綔鐢ㄣ備絾榪欏茍涓嶆剰鍛崇潃榪欒浠g爜鏄紜殑銆傞氳繃浣跨敤闈炲父閲忚漿鎹紝浣犲凡緇忕牬鍧忎簡闈㈠悜瀵硅薄鐨勫皝瑁咃紝騫跺CString鐨勫唴閮ㄥ疄鐜頒綔浜嗘煇浜涘亣瀹氥傚鏋滀綘鏈夎繖鏍風殑杞崲涔犳儻錛屼綘緇堝皢浼氶櫡鍏ヤ唬鐮佸穿婧冪殑澧冨湴銆備綘浼氭兂浠g爜涓轟粈涔堜笉鑳芥甯稿伐浣滀簡錛屽洜涓轟綘鍒板閮戒嬌鐢ㄥ悓鏍風殑浠g爜鑰岄偅浜涗唬鐮佺湅璧鋒潵鏄紜殑銆?BR>銆銆浣犵煡閬撲漢浠繪槸鎶辨ㄧ幇鍦ㄧ殑杞歡鐨刡ug鏄涔堢殑澶氬悧錛熻蔣浠朵腑鐨刡ug鏄洜涓虹▼搴忓憳鍐欎簡涓嶆紜殑浠g爜銆傞毦閬撲綘鐪熺殑鎯沖啓涓浜涗綘鐭ラ亾鏄敊璇殑浠g爜鏉ヤ負鎵鏈夌殑杞歡閮芥弧鏄痓ug榪欑璁よ瘑鍋氳礎鐚悧錛熻姳浜涙椂闂存潵瀛︿範浣跨敤CString鐨勬紜柟娉曡浣犵殑浠g爜鍦ㄤ換浣曟椂闂撮兘姝e父宸ヤ綔鎶娿?BR>銆銆CString 鏈変袱涓嚱鏁版潵浠庝竴涓?CString 鍒涘緩涓涓?BSTR銆傚畠浠槸 AllocSysString() 鍜孲etSysString()銆?<PRE>// Converting to BSTR CString s5 = "Bob!"; BSTR bs1 = NULL, bs2 = NULL; bs1 = s5.AllocSysString(); s5.SetSysString ( &bs2 ); SysFreeString ( bs1 ); SysFreeString ( bs2 ); </PRE><B><I>COleVariant</I></B><BR>銆銆COleVariant鍜孋ComVariant.寰堢浉浼箋侰OleVariant緇ф壙鑷猇ARIANT錛屾墍浠ュ畠鍙互浼犵粰鎺ユ敹VARIANT鐨勫嚱鏁般傜劧鑰岋紝涓嶅儚CComVariant錛孋OleVariant鍙湁涓涓狶PCTSTR鏋勯犲嚱鏁般傛病鏈夊LPCSTR 鍜孡PCWSTR鐨勬瀯閫犲嚱鏁般傚湪澶у鏁版儏鍐典笅榪欎笉鏄竴涓棶棰橈紝鍥犱負涓嶇鎬庢牱浣犵殑瀛楃涓插緢鍙兘鏄疞PCTSTRs錛屼絾榪欐槸涓涓渶瑕佹剰璇嗗埌鐨勯棶棰樸侰OleVariant榪樻湁涓涓帴鏀禖String鍙傛暟鐨勬瀯閫犲嚱鏁般?<PRE>// Constructing CString s1 = _T("tchar string"); COleVariant v1 = _T("Bob"); // construct from an LPCTSTR COleVariant v2 = s1; // copy from a CString </PRE>銆銆鍍廋ComVariant涓鏍鳳紝浣犲繀欏葷洿鎺ヨ闂甐ARIANT鐨勬垚鍛樸傚鏋滈渶瑕佹妸VARIANT杞崲鎴愪竴涓瓧絎︿覆錛屼綘搴旇浣跨敤ChangeType()鏂規硶銆傜劧鑰岋紝COleVariant::ChangeType()濡傛灉澶辮觸浼氭姏鍑哄紓甯革紝鑰屼笉鏄繑鍥炰竴涓〃紺哄け璐ョ殑HRESULT浠g爜銆?<PRE>// Extracting data COleVariant v3 = ...; // fill in v3 from somewhere BSTR bs = NULL; try { v3.ChangeType ( VT_BSTR ); bs = v3.bstrVal; } catch ( COleException* e ) { // error, couldn''t convert } SysFreeString ( bs ); </PRE><BR><TCHAR></TCHAR><IMG alt="" src="http://www.vckbase.com/document/image/paragraph.gif"> <B>WTL 綾?/B><BR><BR><B><I>CString</I></B><BR>銆銆WTL鐨凜String鐨勮涓哄拰MFC鐨?CString瀹屽叏涓鏍鳳紝鎵浠ヤ綘鍙互鍙傝冧笂闈㈠叧浜嶮FC鐨?CString鐨勪粙緇嶃?BR><BR><TCHAR></TCHAR><IMG alt="" src="http://www.vckbase.com/document/image/paragraph.gif"> <B>CLR 鍜?VC 7 綾?/B><BR><BR>銆銆System::String鏄敤鏉ュ鐞嗗瓧絎︿覆鐨?NET綾匯傚湪鍐呴儴錛屼竴涓猄tring瀵硅薄鍖呭惈涓涓笉鍙敼鍙樼殑瀛楃涓插簭鍒椼備換浣曞String瀵硅薄鐨勬搷浣滃疄闄呬笂閮芥槸榪斿洖浜嗕竴涓柊鐨凷tring瀵硅薄錛屽洜涓哄師濮嬬殑瀵硅薄鏄笉鍙敼鍙樼殑銆係tring鐨勪竴涓壒鎬ф槸濡傛灉浣犳湁涓嶆涓涓猄tring瀵硅薄鍖呭惈鐩稿悓鐨勫瓧絎﹀簭鍒楋紝瀹冧滑瀹為檯涓婃槸鎸囧悜鐩稿悓鐨勫璞$殑銆傜浉瀵逛簬C++鐨勪嬌鐢ㄦ墿灞曟槸澧炲姞浜嗕竴涓柊鐨勫瓧絎︿覆甯擱噺鍓嶇紑S錛孲鐢ㄦ潵浠h〃涓涓彈鎺х殑瀛楃涓插父閲忥紙a managed string literal錛夈?<PRE>// Constructing String* ms = S"This is a nice managed string"; </PRE>銆銆浣犲彲浠ヤ紶閫掍竴涓潪鍙楁帶鐨勫瓧絎︿覆鏉ュ垱寤轟竴涓猄tring瀵硅薄錛屼絾鏄牱浼氭瘮浣跨敤鍙楁帶瀛楃涓叉潵鍒涘緩String瀵硅薄閫犳垚鏁堢巼鐨勫井灝忔崯澶便傝繖鏄洜涓烘墍鏈変互S浣滀負鍓嶇紑鐨勭浉鍚岀殑瀛楃涓插疄渚嬮兘浠h〃鍚屾牱鐨勫璞★紝浣嗚繖瀵歸潪鍙楁帶瀵硅薄鏄笉閫傜敤鐨勩備笅闈㈢殑浠g爜娓呮鍦伴槓鏄庝簡榪欎竴鐐癸細 <PRE>String* ms1 = S"this is nice"; String* ms2 = S"this is nice"; String* ms3 = L"this is nice"; Console::WriteLine ( ms1 == ms2 ); // prints true Console::WriteLine ( ms1 == ms3); // prints false </PRE>姝g‘鐨勬瘮杈冨彲鑳芥病鏈変嬌鐢⊿鍓嶇紑鐨勫瓧絎︿覆鐨勬柟娉曟槸浣跨敤String::CompareTo() <PRE> Console::WriteLine ( ms1->CompareTo(ms2) ); Console::WriteLine ( ms1->CompareTo(ms3) ); </PRE>銆銆涓婇潰鐨勪袱琛屼唬鐮侀兘浼氭墦鍗?錛?琛ㄧず涓や釜瀛楃涓茬浉絳夈?String鍜孧FC 7 CString涔嬮棿鐨勮漿鎹㈡槸寰堝鏄撶殑銆侰String鏈変竴涓悜LPCTSTR鐨勮漿鎹㈡搷浣滐紝鑰孲tring鏈変袱涓帴鏀禼har* 鍜?wchar_t*鐨勬瀯閫犲嚱鏁幫紝鍥犳浣犲彲浠ユ妸涓涓狢String鍙橀噺鐩存帴浼犵粰涓涓猄tring鐨勬瀯閫犲嚱鏁般?<PRE>CString s1 ( "hello world" ); String* s2 ( s1 ); // copy from a CString </PRE>鍙嶆柟鍚戠殑杞崲涔熷緢綾諱技 <PRE>String* s1 = S"Three cats"; CString s2 ( s1 ); </PRE>銆銆榪欎篃璁鎬細浣夸綘鎰熷埌涓鐐硅糠鎯戯紝浣嗘槸瀹冪‘瀹炴槸璧蜂綔鐢ㄧ殑銆傚洜涓轟粠VS.NET 寮濮嬶紝CString 鏈変簡涓涓帴鏀禨tring 瀵硅薄鐨勬瀯閫犲嚱鏁般?<PRE> CStringT ( System::String* pString ); </PRE>瀵逛簬涓浜涘揩閫熸搷浣滐紝浣犲彲鑳芥兂璁塊棶搴曞眰鐨勫瓧絎︿覆錛?<PRE>String* s1 = S"Three cats"; Console::WriteLine ( s1 ); const __wchar_t __pin* pstr = PtrToStringChars(s1); for ( int i = 0; i < wcslen(pstr); i++ ) (*const_cast<__wchar_t*>(pstr+i))++; Console::WriteLine ( s1 ); </PRE>銆銆PtrToStringChars()榪斿洖涓涓寚鍚戝簳灞傚瓧絎︿覆鐨刢onst __wchar_t* 錛屾垜浠渶瑕佸浐瀹氬畠錛屽惁鍒欏瀮鍦炬敹闆嗗櫒鎴栬浼氬湪鎴戜滑姝e湪綆$悊瀹冪殑鍐呭鐨勬椂鍊欑Щ鍔ㄤ簡瀹冦?<BR><BR><TCHAR></TCHAR><TCHAR></TCHAR><IMG alt="" src="http://www.vckbase.com/document/image/paragraph.gif"> <B>鍦?printf-style 鏍煎紡鍑芥暟涓嬌鐢ㄥ瓧絎︿覆綾?/B><BR><BR>銆銆褰撲綘鍦╬rintf()鎴栬呯被浼肩殑鍑芥暟涓嬌鐢ㄥ瓧絎︿覆灝佽綾繪椂浣犲繀欏誨崄鍒嗗皬蹇冦傝繖浜涘嚱鏁板寘鎷瑂printf()鍜屽畠鐨勫彉浣擄紝榪樻湁TRACE鍜孉TLTRACE瀹忋傚洜涓鴻繖浜涘嚱鏁版病鏈夊娣誨姞鐨勫弬鏁扮殑綾誨瀷媯鏌ワ紝浣犲繀欏誨皬蹇冿紝鍙兘浼犵粰瀹冧滑C璇█椋庢牸鐨勫瓧絎︿覆鎸囬拡錛岃屼笉鏄竴涓畬鏁寸殑瀛楃涓茬被銆?BR>銆銆渚嬪錛岃鎶婁竴涓猒bstr_t 瀛楃涓蹭紶緇橝TLTRACE()錛屼綘蹇呴』浣跨敤鏄懼紡杞崲(LPCSTR) 鎴栬?LPCWSTR)錛?PRE>_bstr_t bs = L"Bob!"; ATLTRACE("The string is: %s in line %d\n", (LPCSTR) bs, nLine);</PRE> <P>銆銆濡傛灉浣犲繕浜嗕嬌鐢ㄨ漿鎹㈢鑰屾妸鏁翠釜_bstr_t瀵硅薄浼犵粰浜嗗嚱鏁幫紝灝嗕細鏄劇ず涓浜涙鏃犳剰涔夌殑杈撳嚭錛屽洜涓篲bstr_t淇濆瓨鐨勫唴閮ㄦ暟鎹細鍏ㄩ儴琚緭鍑恒?BR><BR><TCHAR></TCHAR><TCHAR></TCHAR><IMG alt="" src="http://www.vckbase.com/document/image/paragraph.gif"> <B>鎵鏈夌被鐨勬葷粨</B><BR><BR>銆銆涓や釜瀛楃涓茬被涔嬮棿榪涜杞崲鐨勫父鐢ㄦ柟寮忔槸錛氬厛鎶婃簮瀛楃涓茶漿鎹㈡垚涓涓狢璇█椋庢牸鐨勫瓧絎︿覆鎸囬拡錛岀劧鍚庢妸榪欎釜鎸囬拡浼犻掔粰鐩殑綾誨瀷鐨勬瀯閫犲嚱鏁般備笅闈㈣繖寮犺〃鏄劇ず浜嗘庢牱鎶婁竴涓瓧絎︿覆杞崲鎴愪竴涓狢璇█椋庢牸鐨勫瓧絎︿覆鎸囬拡浠ュ強鍝簺綾誨叿鏈夋帴鏀禖璇█椋庢牸鐨勫瓧絎︿覆鎸囬拡鐨勬瀯閫犲嚱鏁般?/P> <TABLE id=AutoNumber5 style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=0 cellPadding=0 width="100%" bgColor=#ffffff border=1> <TBODY> <TR> <TD align=middle width="7%"><B><FONT size=1>Class  </FONT></B></TD> <TD align=middle width="10%"><TCHAR></TCHAR><B><FONT size=1>string type </FONT></B></TD> <TD align=middle width="14%"><TCHAR></TCHAR><B><FONT size=1>convert to char*? </FONT></B></TD> <TD align=middle width="12%"><TCHAR></TCHAR><B><FONT size=1>convert to const char*? </FONT></B></TD> <TD align=middle width="12%"><TCHAR></TCHAR><B><FONT size=1>convert to wchar_t*? </FONT></B></TD> <TD align=middle width="11%"><TCHAR></TCHAR><B><FONT size=1>convert to const wchar_t*? </FONT></B></TD> <TD align=middle width="11%"><TCHAR></TCHAR><B><FONT size=1>convert to BSTR? </FONT></B></TD> <TD align=middle width="11%"><TCHAR></TCHAR><B><FONT size=1>construct from char*? </FONT></B></TD> <TD align=middle width="12%"><TCHAR></TCHAR><B><FONT size=1>construct from wchar_t*?</FONT></B></TD></TR> <TR> <TD width="7%">_bstr_t</TD> <TD width="10%">BSTR</TD> <TD width="14%">yes cast<SUP>1</SUP></TD> <TD width="12%">yes cast</TD> <TD width="12%"><TCHAR></TCHAR><TCHAR></TCHAR>yes cast<TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR><SUP>1</SUP></TD> <TD width="11%"><TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR>yes cast</TD> <TD width="11%">yes<SUP>2</SUP></TD> <TD width="11%"><TCHAR></TCHAR><TCHAR></TCHAR>yes</TD> <TD width="12%"><TCHAR></TCHAR><TCHAR></TCHAR>yes</TD></TR> <TR> <TD width="7%">_variant_t</TD> <TD width="10%">BSTR</TD> <TD width="14%">no</TD> <TD width="12%">no</TD> <TD width="12%">no</TD> <TD width="11%">cast to<BR>_bstr_t<SUP>3</SUP></TD> <TD width="11%"><TCHAR></TCHAR><TCHAR></TCHAR>cast to<BR>_bstr_t<SUP>3</SUP></TD> <TD width="11%"><TCHAR></TCHAR><TCHAR></TCHAR>yes</TD> <TD width="12%"><TCHAR></TCHAR><TCHAR></TCHAR>yes</TD></TR> <TR> <TD width="7%">string</TD> <TD width="10%">MBCS</TD> <TD width="14%"><TCHAR></TCHAR><TCHAR></TCHAR>no</TD> <TD width="12%">yes c_str() method</TD> <TD width="12%"><TCHAR></TCHAR><TCHAR></TCHAR>no</TD> <TD width="11%">no</TD> <TD width="11%">no</TD> <TD width="11%"><TCHAR></TCHAR><TCHAR></TCHAR>yes</TD> <TD width="12%">no</TD></TR> <TR> <TD width="7%">wstring</TD> <TD width="10%">Unicode</TD> <TD width="14%"><TCHAR></TCHAR><TCHAR></TCHAR>no</TD> <TD width="12%"><TCHAR></TCHAR><TCHAR></TCHAR>no</TD> <TD width="12%"><TCHAR></TCHAR><TCHAR></TCHAR>no</TD> <TD width="11%"><TCHAR></TCHAR><TCHAR></TCHAR>yes c_str() method</TD> <TD width="11%">no</TD> <TD width="11%">no</TD> <TD width="12%"><TCHAR></TCHAR><TCHAR></TCHAR>yes</TD></TR> <TR> <TD width="7%">CComBSTR</TD> <TD width="10%">BSTR</TD> <TD width="14%"><TCHAR></TCHAR><TCHAR></TCHAR>no</TD> <TD width="12%"><TCHAR></TCHAR><TCHAR></TCHAR>no</TD> <TD width="12%"><TCHAR></TCHAR><TCHAR></TCHAR>no</TD> <TD width="11%">yes cast to BSTR</TD> <TD width="11%">yes cast</TD> <TD width="11%"><TCHAR></TCHAR><TCHAR></TCHAR>yes</TD> <TD width="12%"><TCHAR></TCHAR><TCHAR></TCHAR>yes</TD></TR> <TR> <TD width="7%">CComVariant</TD> <TD width="10%"><TCHAR></TCHAR><TCHAR></TCHAR>BSTR</TD> <TD width="14%"><TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR>no</TD> <TD width="12%"><TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR>no</TD> <TD width="12%"><TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR>no</TD> <TD width="11%">yes<SUP>4</SUP></TD> <TD width="11%"><TCHAR></TCHAR><TCHAR></TCHAR>yes<TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR><SUP>4</SUP></TD> <TD width="11%"><TCHAR></TCHAR><TCHAR></TCHAR>yes</TD> <TD width="12%"><TCHAR></TCHAR><TCHAR></TCHAR>yes</TD></TR> <TR> <TD width="7%">CString </TD> <TD width="10%">TCHAR</TD> <TD width="14%"><TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR>no<SUP>6</SUP></TD> <TD width="12%">in MBCS<BR>builds, cast</TD> <TD width="12%"><TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR>no<TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR><SUP>6</SUP></TD> <TD width="11%">in Unicode<BR>builds, cast</TD> <TD width="11%">no<SUP>5</SUP></TD> <TD width="11%"><TCHAR></TCHAR><TCHAR></TCHAR>yes</TD> <TD width="12%"><TCHAR></TCHAR><TCHAR></TCHAR>yes</TD></TR> <TR> <TD width="7%">COleVariant</TD> <TD width="10%"><TCHAR></TCHAR><TCHAR></TCHAR>BSTR</TD> <TD width="14%"><TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR>no</TD> <TD width="12%"><TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR>no</TD> <TD width="12%"><TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR>no</TD> <TD width="11%"><TCHAR></TCHAR><TCHAR></TCHAR>yes<TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR><SUP>4</SUP></TD> <TD width="11%"><TCHAR></TCHAR><TCHAR></TCHAR>yes<TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR><SUP>4</SUP></TD> <TD width="11%"><TCHAR></TCHAR><TCHAR></TCHAR>in MBCS<BR>builds</TD> <TD width="12%"><TCHAR></TCHAR><TCHAR></TCHAR>in Unicode<BR>builds</TD></TR> <TR> <TD width="100%" colSpan=9> <DIR> <LI>1銆佸嵆浣?_bstr_t 鎻愪緵浜嗗悜闈炲父閲忔寚閽堢殑杞崲鎿嶄綔絎︼紝淇敼搴曞眰鐨勭紦鍐插尯涔熶細宸插紩璧稧PF濡傛灉浣犳孩鍑轟簡緙撳啿鍖烘垨鑰呴犳垚鍐呭瓨娉勬紡銆? <LI>2<TCHAR></TCHAR><TCHAR></TCHAR>銆乢bstr_t 鍦ㄥ唴閮ㄧ敤涓涓?wchar_t* 鏉ヤ繚瀛?BSTR錛屾墍浠ヤ綘鍙互浣跨敤 const wchar_t* 鏉ヨ闂瓸STR銆傝繖鏄竴涓疄鐜扮粏鑺傦紝浣犲彲浠ュ皬蹇冪殑浣跨敤瀹冿紝灝嗘潵榪欎釜緇嗚妭涔熻浼氭敼鍙樸? <LI>3<TCHAR></TCHAR><TCHAR></TCHAR>銆佸鏋滄暟鎹笉鑳借漿鎹㈡垚BSTR浼氭姏鍑轟竴涓紓甯搞? <LI>4<TCHAR></TCHAR><TCHAR></TCHAR>銆佷嬌鐢?ChangeType()錛岀劧鍚庤闂?VARIANT 鐨?bstrVal 鎴愬憳銆傚湪MFC涓紝濡傛灉鏁版嵁杞崲涓嶆垚鍔熷皢浼氭姏鍑哄紓甯搞? <LI>5<TCHAR></TCHAR><TCHAR></TCHAR>銆佽繖閲屾病鏈夎漿鎹?BSTR 鍑芥暟錛岀劧鑰?AllocSysString() 榪斿洖涓涓柊鐨凚STR銆? <LI>6<TCHAR></TCHAR><TCHAR></TCHAR>銆佷嬌鐢?GetBuffer() 鏂規硶錛屼綘鍙互鏆傛椂鍦板緱鍒頒竴涓潪甯擱噺鐨凾CHAR鎸囬拡銆?</LI></DIR></TD></TR></TBODY></TABLE> <P><BR></P></TD></TR> <TR> <TD><TCHAR></TCHAR><TCHAR></TCHAR><TCHAR></TCHAR><IMG alt="" src="http://www.vckbase.com/document/image/paragraph.gif"> <B>浣滆呯畝浠?BR><BR></B><I>Michael Dunn錛?BR>銆銆</I>Michael Dunn灞呬綇鍦ㄩ槼鍏夊煄甯傛礇鏉夌煻銆備粬鏄姝ょ殑鍠滄榪欓噷鐨勫ぉ姘斾互鑷翠簬鎯充竴鐢熼兘浣忓湪榪欓噷銆備粬鍦?騫寸駭鏃跺紑濮嬬紪紼嬶紝閭f椂鐢ㄧ殑鐢佃剳鏄疉pple //e銆?995騫達紝鍦║CLA鑾峰緱鏁板瀛﹀+瀛︿綅錛岄殢鍚庡湪Symantec鍏徃鍋歈A宸ョ▼甯堬紝鍦?Norton AntiVirus 緇勫伐浣溿備粬鑷浜?Windows 鍜?MFC 緙栫▼銆?999-2000騫達紝浠栬璁″茍瀹炵幇浜?Norton AntiVirus鐨勬柊鐣岄潰銆?BR>銆銆Michael 鐜板湪鍦?Napster錛堜竴涓彁渚涘湪綰胯闃呴煶涔愭湇鍔$殑鍏徃錛夊仛寮鍙戝伐浣滐紝浠栬繕寮鍙戜簡UltraBar錛屼竴涓狪E宸ュ叿鏍忔彃浠訛紝瀹冨彲浠ヤ嬌緗戠粶鎼滅儲鏇村姞瀹規槗錛岀粰浜?googlebar 浠ユ矇閲嶆墦鍑伙紱浠栬繕寮鍙戜簡 CodeProject SearchBar錛涗笌浜哄叡鍚屽垱寤轟簡 Zabersoft 鍏徃錛岃鍏徃鍦ㄦ礇鏉夌煻鍜屼腹楹︾殑 Odense 閮借鏈夊姙浜嬪銆?BR>銆銆浠栧枩嬈㈢帺娓告垙銆傜埍鐜╃殑娓告垙鏈?pinball, bike riding錛屽伓灝旇繕鐜?PS, Dreamcasth 鍜?MAME 娓告垙銆備粬鍥犲繕浜嗚嚜宸辨浘緇忓榪囩殑璇█錛氭硶璇佹眽璇佹棩璇屾劅鍒版偛鍝銆?BR><BR><I>Nishant S(Nish)</I>錛?BR>銆銆Nish鏄潵鑷嵃搴?Trivandrum,鐨?Microsoft Visual C++ MVP銆備粬浠?990騫村紑濮嬬紪鐮併傜幇鍦紝Nish涓轟綔涓哄悎鍚岄泧鍛樺湪瀹墮噷涓?CodeProject 宸ヤ綔銆傘銆銆<BR>銆銆浠栬繕鍐欎簡涓閮ㄦ氮婕垙鍓с?TCHAR></TCHAR><TCHAR></TCHAR>Summer Love and Some more Cricket<TCHAR></TCHAR><TCHAR></TCHAR>銆嬪拰涓鏈紪紼嬩功綾嶃?TCHAR></TCHAR>Extending MFC applications with the .NET Framework<TCHAR></TCHAR>銆嬨備粬榪樼鐞嗚匨VP鐨勪竴涓綉绔檋ttp://www.voidnish.com/ 銆傚湪榪欎釜緗戠珯涓婏紝浣犲彲浠ョ湅鍒頒粬鐨勫緢澶氬叧浜庣紪紼嬫柟闈㈢殑鎬濇兂鍜屾枃绔犮?BR>Nish 榪樿鍒掑ソ<TCHAR></TCHAR>浜?TCHAR></TCHAR>鏃呮父錛屼粬甯屾湜鑷竴鐢熶腑鑳藉鍒拌揪鍦扮悆涓婂敖鍙兘澶氱殑鍦版柟銆?/TD></TR></TBODY></TABLE></SPAN><BR> <DIV style="FONT-SIZE: 14px; LINE-HEIGHT: 25px"><STRONG>浣滆匓log錛?/STRONG><A id=ArticleContent1_ArticleContent1_AuthorBlogLink target=_blank>http://blog.csdn.net/lithe/</A></DIV> <DIV style="FONT-SIZE: 14px; COLOR: #900; LINE-HEIGHT: 25px"><STRONG>鐩稿叧鏂囩珷</STRONG></DIV> <TABLE id=ArticleContent1_ArticleContent1_RelatedArticles cellSpacing=0 border=0> <TBODY> <TR> <TD><A >C++瀛楃涓插畬鍏ㄦ寚寮曚箣浜?鈥斺?瀛楃涓插皝瑁呯被</A> </TD></TR> <TR> <TD><A >C++瀛楃涓插畬鍏ㄦ寚寮曚箣涓 鈥斺?Win32 瀛楃緙栫爜</A> </TD></TR> <TR> <TD><A >VC++涓繘紼嬩笌澶氳繘紼嬬鐞嗙殑鏂規硶</A> </TD></TR> <TR> <TD><A >瑙f瀽#pragma鎸囦護</A> </TD></TR> <TR> <TD><A >鐢ˋTL寤虹珛杞婚噺綰х殑COM瀵硅薄錛堜竴錛?/A> </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><img src ="http://m.shnenglu.com/ivenher/aggbug/772.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/ivenher/" target="_blank">鐖遍キ鐩?/a> 2005-10-21 14:25 <a href="http://m.shnenglu.com/ivenher/articles/772.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <a href="http://m.shnenglu.com/">青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品</a> <div style="position:fixed;left:-9000px;top:-9000px;"><font id="pjuwb"></font><button id="pjuwb"><pre id="pjuwb"></pre></button><sub id="pjuwb"></sub><tbody id="pjuwb"><var id="pjuwb"><address id="pjuwb"></address></var></tbody><listing id="pjuwb"><label id="pjuwb"><strong id="pjuwb"></strong></label></listing><wbr id="pjuwb"><small id="pjuwb"><tbody id="pjuwb"></tbody></small></wbr><ins id="pjuwb"><xmp id="pjuwb"></xmp></ins><style id="pjuwb"></style><label id="pjuwb"><em id="pjuwb"><li id="pjuwb"></li></em></label><samp id="pjuwb"></samp><menu id="pjuwb"><input id="pjuwb"></input></menu><pre id="pjuwb"><tbody id="pjuwb"><tfoot id="pjuwb"><button id="pjuwb"></button></tfoot></tbody></pre><form id="pjuwb"></form><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"><sup id="pjuwb"></sup></label></style></i><li id="pjuwb"><table id="pjuwb"><abbr id="pjuwb"></abbr></table></li><video id="pjuwb"></video><dfn id="pjuwb"></dfn><progress id="pjuwb"></progress><strong id="pjuwb"></strong><mark id="pjuwb"></mark><em id="pjuwb"></em><tbody id="pjuwb"><p id="pjuwb"><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike></p></tbody><option id="pjuwb"></option><strike id="pjuwb"></strike><u id="pjuwb"></u><td id="pjuwb"><center id="pjuwb"><tr id="pjuwb"></tr></center></td><em id="pjuwb"><mark id="pjuwb"><em id="pjuwb"><tt id="pjuwb"></tt></em></mark></em><strong id="pjuwb"></strong><wbr id="pjuwb"></wbr><s id="pjuwb"></s><strong id="pjuwb"></strong><legend id="pjuwb"></legend><nav id="pjuwb"></nav><dl id="pjuwb"><th id="pjuwb"><dl id="pjuwb"></dl></th></dl><noframes id="pjuwb"><ins id="pjuwb"></ins></noframes><font id="pjuwb"></font><strike id="pjuwb"><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"></label></style></i></strike><output id="pjuwb"></output><thead id="pjuwb"><pre id="pjuwb"></pre></thead><source id="pjuwb"></source><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem><pre id="pjuwb"><span id="pjuwb"><pre id="pjuwb"><big id="pjuwb"></big></pre></span></pre><cite id="pjuwb"><fieldset id="pjuwb"><s id="pjuwb"><rt id="pjuwb"></rt></s></fieldset></cite><big id="pjuwb"><progress id="pjuwb"><big id="pjuwb"></big></progress></big><samp id="pjuwb"><delect id="pjuwb"></delect></samp><dl id="pjuwb"></dl><strike id="pjuwb"><nav id="pjuwb"><dl id="pjuwb"><strong id="pjuwb"></strong></dl></nav></strike><tbody id="pjuwb"><b id="pjuwb"><optgroup id="pjuwb"><rp id="pjuwb"></rp></optgroup></b></tbody><em id="pjuwb"></em><xmp id="pjuwb"><blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote></xmp> <i id="pjuwb"><abbr id="pjuwb"><i id="pjuwb"><abbr id="pjuwb"></abbr></i></abbr></i><center id="pjuwb"><acronym id="pjuwb"><center id="pjuwb"></center></acronym></center><pre id="pjuwb"></pre><ul id="pjuwb"><thead id="pjuwb"></thead></ul><blockquote id="pjuwb"><pre id="pjuwb"><sup id="pjuwb"></sup></pre></blockquote><acronym id="pjuwb"></acronym><big id="pjuwb"><s id="pjuwb"></s></big><th id="pjuwb"></th><th id="pjuwb"></th><tbody id="pjuwb"></tbody><thead id="pjuwb"><strike id="pjuwb"></strike></thead><th id="pjuwb"><dl id="pjuwb"><wbr id="pjuwb"></wbr></dl></th><dl id="pjuwb"><strong id="pjuwb"></strong></dl><abbr id="pjuwb"><noframes id="pjuwb"><noscript id="pjuwb"></noscript></noframes></abbr><td id="pjuwb"><ol id="pjuwb"></ol></td><li id="pjuwb"><noscript id="pjuwb"><abbr id="pjuwb"></abbr></noscript></li><small id="pjuwb"><bdo id="pjuwb"><nav id="pjuwb"></nav></bdo></small><style id="pjuwb"></style><optgroup id="pjuwb"><table id="pjuwb"></table></optgroup><center id="pjuwb"><tr id="pjuwb"><dfn id="pjuwb"></dfn></tr></center><th id="pjuwb"></th><u id="pjuwb"></u><tfoot id="pjuwb"><legend id="pjuwb"><i id="pjuwb"></i></legend></tfoot><mark id="pjuwb"></mark><meter id="pjuwb"></meter><nav id="pjuwb"></nav><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><nobr id="pjuwb"></nobr><sub id="pjuwb"><th id="pjuwb"><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem></th></sub><thead id="pjuwb"><sub id="pjuwb"></sub></thead><ul id="pjuwb"><address id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></address></ul><dfn id="pjuwb"></dfn><pre id="pjuwb"></pre><input id="pjuwb"><cite id="pjuwb"><fieldset id="pjuwb"></fieldset></cite></input><u id="pjuwb"><form id="pjuwb"><u id="pjuwb"></u></form></u><kbd id="pjuwb"><em id="pjuwb"><mark id="pjuwb"></mark></em></kbd><tr id="pjuwb"></tr><del id="pjuwb"><form id="pjuwb"><address id="pjuwb"></address></form></del><tfoot id="pjuwb"><legend id="pjuwb"><ol id="pjuwb"><dl id="pjuwb"></dl></ol></legend></tfoot><menu id="pjuwb"><nobr id="pjuwb"><th id="pjuwb"><nobr id="pjuwb"></nobr></th></nobr></menu><fieldset id="pjuwb"></fieldset><pre id="pjuwb"><blockquote id="pjuwb"><samp id="pjuwb"></samp></blockquote></pre><xmp id="pjuwb"><sup id="pjuwb"><pre id="pjuwb"></pre></sup></xmp><span id="pjuwb"><progress id="pjuwb"></progress></span><font id="pjuwb"></font><var id="pjuwb"><abbr id="pjuwb"></abbr></var><strong id="pjuwb"><label id="pjuwb"><i id="pjuwb"><legend id="pjuwb"></legend></i></label></strong><tr id="pjuwb"><em id="pjuwb"><em id="pjuwb"><output id="pjuwb"></output></em></em></tr><thead id="pjuwb"><strike id="pjuwb"></strike></thead> <acronym id="pjuwb"></acronym><i id="pjuwb"></i><tt id="pjuwb"></tt><rt id="pjuwb"><source id="pjuwb"><rt id="pjuwb"></rt></source></rt><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike><del id="pjuwb"></del><font id="pjuwb"><output id="pjuwb"><ins id="pjuwb"><output id="pjuwb"></output></ins></output></font><kbd id="pjuwb"><tr id="pjuwb"><kbd id="pjuwb"></kbd></tr></kbd><pre id="pjuwb"><sup id="pjuwb"><delect id="pjuwb"><samp id="pjuwb"></samp></delect></sup></pre><samp id="pjuwb"></samp><track id="pjuwb"></track><tr id="pjuwb"></tr><center id="pjuwb"></center><fieldset id="pjuwb"></fieldset><i id="pjuwb"></i><td id="pjuwb"></td><rt id="pjuwb"></rt><object id="pjuwb"></object><pre id="pjuwb"><progress id="pjuwb"><sub id="pjuwb"><thead id="pjuwb"></thead></sub></progress></pre><kbd id="pjuwb"><tr id="pjuwb"><option id="pjuwb"></option></tr></kbd><output id="pjuwb"><ins id="pjuwb"></ins></output><ol id="pjuwb"></ol><source id="pjuwb"></source><strong id="pjuwb"></strong><ruby id="pjuwb"></ruby><sub id="pjuwb"><meter id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></meter></sub><pre id="pjuwb"></pre><center id="pjuwb"></center><tr id="pjuwb"><tbody id="pjuwb"><xmp id="pjuwb"><dd id="pjuwb"></dd></xmp></tbody></tr><video id="pjuwb"></video><pre id="pjuwb"></pre><form id="pjuwb"><optgroup id="pjuwb"></optgroup></form><samp id="pjuwb"></samp><kbd id="pjuwb"></kbd><strong id="pjuwb"><option id="pjuwb"></option></strong><object id="pjuwb"></object><abbr id="pjuwb"><noframes id="pjuwb"><abbr id="pjuwb"></abbr></noframes></abbr><ul id="pjuwb"><del id="pjuwb"><button id="pjuwb"><pre id="pjuwb"></pre></button></del></ul><abbr id="pjuwb"></abbr><strong id="pjuwb"><code id="pjuwb"><strong id="pjuwb"></strong></code></strong><option id="pjuwb"></option><optgroup id="pjuwb"><bdo id="pjuwb"><code id="pjuwb"></code></bdo></optgroup><mark id="pjuwb"><em id="pjuwb"><font id="pjuwb"></font></em></mark><acronym id="pjuwb"><code id="pjuwb"></code></acronym><dl id="pjuwb"></dl><em id="pjuwb"></em><object id="pjuwb"><input id="pjuwb"><object id="pjuwb"></object></input></object><output id="pjuwb"><dd id="pjuwb"></dd></output><option id="pjuwb"><button id="pjuwb"><option id="pjuwb"></option></button></option><small id="pjuwb"></small></div> <a href="http://laodaohang.com" target="_blank">日韩午夜黄色</a>| <a href="http://wwwhaodd116.com" target="_blank">久久大香伊蕉在人线观看热2</a>| <a href="http://yw9677.com" target="_blank">亚洲高清av在线</a>| <a href="http://www297777.com" target="_blank">久久aⅴ国产欧美74aaa</a>| <a href="http://7213523.com" target="_blank">久久综合九色欧美综合狠狠</a>| <a href="http://fyfsds.com" target="_blank">久久免费视频网</a>| <a href="http://playav111.com" target="_blank">亚洲欧美中文另类</a>| <a href="http://budanbao.com" target="_blank">久久成人资源</a>| <a href="http://zw1019.com" target="_blank">午夜精品www</a>| <a href="http://668334.com" target="_blank">亚洲欧美在线一区</a>| <a href="http://js6996.com" target="_blank">久久国产精品亚洲77777</a>| <a href="http://wwwavtb1122.com" target="_blank">亚洲免费视频一区二区</a>| <a href="http://04781900.com" target="_blank">亚洲视屏在线播放</a>| <a href="http://yeyelu888.com" target="_blank">亚洲午夜一级</a>| <a href="http://by27333.com" target="_blank">欧美一区二区三区播放老司机</a>| <a href="http://quanfadq.com" target="_blank">亚洲午夜激情网页</a>| <a href="http://278263.com" target="_blank">久久成人18免费观看</a>| <a href="http://carboarm.com" target="_blank">久久夜色撩人精品</a>| <a href="http://www-232323.com" target="_blank">欧美激情在线免费观看</a>| <a href="http://bbww55.com" target="_blank">亚洲精品美女在线观看播放</a>| <a href="http://sxhrsmjj.com" target="_blank">亚洲高清不卡在线观看</a>| <a href="http://www-833898.com" target="_blank">亚洲精品一区二区网址</a>| <a href="http://911mmm.com" target="_blank">亚洲欧美在线免费观看</a>| <a href="http://chinasck.com" target="_blank">欧美 亚欧 日韩视频在线</a>| <a href="http://3dmh329.com" target="_blank">欧美日韩精品在线观看</a>| <a href="http://ayxchc.com" target="_blank">国产亚洲va综合人人澡精品</a>| <a href="http://by3799.com" target="_blank">亚洲高清二区</a>| <a href="http://chaoxibg.com" target="_blank">性xx色xx综合久久久xx</a>| <a href="http://www979vv.com" target="_blank">欧美77777</a>| <a href="http://2061856.com" target="_blank">欧美一区在线直播</a>| <a href="http://huaihuaihuai.com" target="_blank">欧美三级不卡</a>| <a href="http://miaoxp.com" target="_blank">夜夜嗨网站十八久久</a>| <a href="http://analemi.com" target="_blank">老司机亚洲精品</a>| <a href="http://1313js.com" target="_blank">久久精品在线免费观看</a>| <a href="http://cgnwp.com" target="_blank">久久精品亚洲乱码伦伦中文</a>| <a href="http://free18teen.com" target="_blank">国产精品久久久久久久一区探花</a>| <a href="http://99cheats.com" target="_blank">亚洲免费在线观看视频</a>| <a href="http://8xfore.com" target="_blank">欧美在线一区二区三区</a>| <a href="http://2235e.com" target="_blank">国产日韩欧美黄色</a>| <a href="http://456316.com" target="_blank">欧美激情一区二区三区在线</a>| <a href="http://www227zh.com" target="_blank">国产精品黄视频</a>| <a href="http://8xyxs1.com" target="_blank">老司机aⅴ在线精品导航</a>| <a href="http://gbandal.com" target="_blank">亚洲欧美日韩爽爽影院</a>| <a href="http://yeepey.com" target="_blank">欧美日韩专区在线</a>| <a href="http://830085.com" target="_blank">亚洲一区二区三区免费在线观看</a>| <a href="http://jav69me.com" target="_blank">亚洲人成久久</a>| <a href="http://tinganji.com" target="_blank">欧美精品亚洲精品</a>| <a href="http://jorhom.com" target="_blank">亚洲视频日本</a>| <a href="http://1588vip.com" target="_blank">亚洲深夜福利</a>| <a href="http://xajtyd.com" target="_blank">亚洲国产婷婷综合在线精品</a>| <a href="http://emu160.com" target="_blank">91久久综合</a>| <a href="http://www-n77.com" target="_blank">国产精品丝袜91</a>| <a href="http://www151zh.com" target="_blank">免费在线视频一区</a>| <a href="http://aqdw2021.com" target="_blank">国产精品福利网站</a>| <a href="http://8eeeccc.com" target="_blank">欧美国产日韩a欧美在线观看</a>| <a href="http://ategpu.com" target="_blank">国产精品爱啪在线线免费观看</a>| <a href="http://www068hs.com" target="_blank">久久成人一区二区</a>| <a href="http://csjtzn.com" target="_blank">欧美视频一区</a>| <a href="http://tp112.com" target="_blank">欧美激情aaaa</a>| <a href="http://www23009.com" target="_blank">亚洲人成人一区二区三区</a>| <a href="http://569658.com" target="_blank">久久美女性网</a>| <a href="http://www-90567.com" target="_blank">亚洲女同性videos</a>| <a href="http://xxxsxx.com" target="_blank">欧美色精品在线视频</a>| <a href="http://uu774.com" target="_blank">国产精品久久久久久久久久免费看</a>| <a href="http://wb2014.com" target="_blank">国产女人18毛片水18精品</a>| <a href="http://naturalgiftfashion.com" target="_blank">国产精品视频免费观看www</a>| <a href="http://s3yx.com" target="_blank">欧美精品v日韩精品v国产精品</a>| <a href="http://cnm24.com" target="_blank">欧美另类在线观看</a>| <a href="http://y65y.com" target="_blank">黄色一区二区在线观看</a>| <a href="http://sdkingpin.com" target="_blank">中文欧美字幕免费</a>| <a href="http://av0333.com" target="_blank">亚洲高清色综合</a>| <a href="http://345kt.com" target="_blank">国产精品视频免费观看</a>| <a href="http://wo6wo.com" target="_blank">一区二区三区福利</a>| <a href="http://www224558.com" target="_blank">在线亚洲欧美</a>| <a href="http://chainhuayu.com" target="_blank">亚洲黄色高清</a>| <a href="http://wlhtgj.com" target="_blank">久久青草久久</a>| <a href="http://777177c.com" target="_blank">欧美激情麻豆</a>| <a href="http://www-4890.com" target="_blank">亚洲福利专区</a>| <a href="http://sese699.com" target="_blank">亚洲精品之草原avav久久</a>| <a href="http://xiyan88.com" target="_blank">久久精品国产久精国产爱</a>| <a href="http://www901aaa.com" target="_blank">欧美在线你懂的</a>| <a href="http://gdjuba.com" target="_blank">国产视频在线观看一区二区</a>| <a href="http://9a9u.com" target="_blank">性欧美xxxx大乳国产app</a>| <a href="http://569658.com" target="_blank">欧美中文字幕在线视频</a>| <a href="http://by99969.com" target="_blank">国产日产欧美精品</a>| <a href="http://o10669.com" target="_blank">欧美成人免费一级人片100</a>| <a href="http://easypufu.com" target="_blank">亚洲福利视频免费观看</a>| <a href="http://ss2ssc.com" target="_blank">中文精品视频一区二区在线观看</a>| <a href="http://eee2244.com" target="_blank">欧美精品videossex性护士</a>| <a href="http://gaysexcube.com" target="_blank">亚洲欧洲一区二区三区久久</a>| <a href="http://www66441.com" target="_blank">一区二区三区国产盗摄</a>| <a href="http://080177.com" target="_blank">国产日韩欧美中文</a>| <a href="http://9niuw.com" target="_blank">免费观看一级特黄欧美大片</a>| <a href="http://by777117.com" target="_blank">91久久久久久国产精品</a>| <a href="http://gzpurefaith.com" target="_blank">亚洲女人天堂av</a>| <a href="http://www-132377.com" target="_blank">亚洲第一主播视频</a>| <a href="http://uuclassroom.com" target="_blank">欧美日韩一区二区三区在线视频</a>| <a href="http://jx963.com" target="_blank">亚洲一区二区伦理</a>| <a href="http://zyjdxx.com" target="_blank">亚洲高清视频一区</a>| <a href="http://haochen072.com" target="_blank">久久九九国产精品怡红院</a>| <a href="http://www62265.com" target="_blank">亚洲精华国产欧美</a>| <a href="http://t3gg.com" target="_blank">国产欧美日韩91</a>| <a href="http://saobi6.com" target="_blank">欧美日韩中文字幕在线视频</a>| <a href="http://qdpetlove.com" target="_blank">久久精品99国产精品</a>| <a href="http://jivbus.com" target="_blank">国产精品99久久久久久久女警</a>| <a href="http://yzsss.com" target="_blank">美女999久久久精品视频</a>| <a href="http://521531.com" target="_blank">亚洲欧美在线免费观看</a>| <a href="http://chengli88.com" target="_blank">亚洲日产国产精品</a>| <a href="http://dsbangx.com" target="_blank">一色屋精品视频免费看</a>| <a href="http://wanzhixue.com" target="_blank">国产日韩高清一区二区三区在线</a>| <a href="http://66889h.com" target="_blank">欧美紧缚bdsm在线视频</a>| <a href="http://www-137999.com" target="_blank">久久亚洲影音av资源网</a>| <a href="http://wwwnnnn.com" target="_blank">欧美在线精品一区</a>| <a href="http://haomscq.com" target="_blank">亚洲欧美一区二区在线观看</a>| <a href="http://alex-bruni.com" target="_blank">日韩香蕉视频</a>| <a href="http://1194123.com" target="_blank">在线亚洲免费视频</a>| <a href="http://daqinhkvip.com" target="_blank">亚洲精品日本</a>| <a href="http://2061375.com" target="_blank">av成人免费在线</a>| <a href="http://xmjhyey.com" target="_blank">一区二区欧美亚洲</a>| <a href="http://4446666.com" target="_blank">日韩一级大片</a>| <a href="http://017492.com" target="_blank">亚洲摸下面视频</a>| <a href="http://123yongjiu.com" target="_blank">性色av一区二区怡红</a>| <a href="http://chunshanketang.com" target="_blank">性欧美18~19sex高清播放</a>| <a href="http://9585865.com" target="_blank">亚洲欧美国产毛片在线</a>| <a href="http://jafzjz.com" target="_blank">欧美一区激情视频在线观看</a>| <a href="http://1313js.com" target="_blank">久久不见久久见免费视频1</a>| <a href="http://794238.com" target="_blank">久久精品女人天堂</a>| <a href="http://06le.com" target="_blank">亚洲国产成人在线</a>| <a href="http://free18teen.com" target="_blank">欧美一区二区三区视频免费播放 </a>| <a href="http://hjk56.com" target="_blank">亚洲人成绝费网站色www</a>| <a href="http://aaddgg66.com" target="_blank">亚洲国产欧美一区二区三区同亚洲 </a>| <a href="http://hnspygxjscyfwzx.com" target="_blank">亚洲国产精品va在看黑人</a>| <a href="http://11867a.com" target="_blank">欧美在线中文字幕</a>| <a href="http://xccp4888.com" target="_blank">亚洲午夜高清视频</a>| <a href="http://cgnwp.com" target="_blank">国产精品视频免费</a>| <a href="http://aidingcai.com" target="_blank">欧美中文字幕</a>| <a href="http://yw3328.com" target="_blank">久久99在线观看</a>| <a href="http://aa224.com" target="_blank">亚洲第一天堂av</a>| <a href="http://850cn.com" target="_blank">亚洲精品欧美日韩</a>| <a href="http://fengxinye.com" target="_blank">欧美日韩中文精品</a>| <a href="http://yichenep.com" target="_blank">亚洲欧美日韩综合</a>| <a href="http://899gh.com" target="_blank">亚洲视频狠狠</a>| <a href="http://xingda-sh.com" target="_blank">韩日精品视频</a>| <a href="http://xingda-sh.com" target="_blank">亚洲福利专区</a>| <a href="http://0755hqr.com" target="_blank">国产精品视频久久</a>| <a href="http://www-733999.com" target="_blank">欧美阿v一级看视频</a>| <a href="http://520taose.com" target="_blank">欧美日韩中文精品</a>| <a href="http://993934.com" target="_blank">久久久亚洲人</a>| <a href="http://099553.com" target="_blank">免费人成精品欧美精品</a>| <a href="http://0000zz.com" target="_blank">日韩亚洲在线</a>| <a href="http://mes-dvd.com" target="_blank">国产精品久久久一本精品</a>| <a href="http://sz-changrong.com" target="_blank">亚洲午夜极品</a>| <a href="http://www-72794.com" target="_blank">日韩西西人体444www</a>| <a href="http://1000kongbao.com" target="_blank">欧美午夜精品久久久久久人妖 </a>| <a href="http://5474hu.com" target="_blank">一本久久综合亚洲鲁鲁五月天</a>| <a href="http://039658.com" target="_blank">可以看av的网站久久看</a>| <a href="http://4kmz.com" target="_blank">亚洲国产二区</a>| <a href="http://tavbao.com" target="_blank">亚洲色图自拍</a>| <a href="http://798200.com" target="_blank">国产亚洲欧洲一区高清在线观看</a>| <a href="http://mmpzyw.com" target="_blank">久久久久欧美精品</a>| <a href="http://18cgh.com" target="_blank">欧美国产欧美综合 </a>| <a href="http://kkwwxx.com" target="_blank">伊大人香蕉综合8在线视</a>| <a href="http://zytxkj.com" target="_blank">久久国产精品72免费观看</a>| <a href="http://whaylan.com" target="_blank">久久精品国产亚洲a</a>| <a href="http://4kmz.com" target="_blank">亚洲欧美日韩在线不卡</a>| <a href="http://www492002.com" target="_blank">欧美一区久久</a>| <a href="http://goldure.com" target="_blank">中日韩美女免费视频网址在线观看</a>| <a href="http://390642.com" target="_blank">99视频一区二区三区</a>| <a href="http://baostat.com" target="_blank">国内偷自视频区视频综合</a>| <a href="http://kk1xx-com.com" target="_blank">亚洲国产国产亚洲一二三</a>| <a href="http://xxdd51.com" target="_blank">国产目拍亚洲精品99久久精品</a>| <a href="http://848585.com" target="_blank">欧美韩日精品</a>| <a href="http://yhc26.com" target="_blank">亚洲三级视频</a>| <a href="http://www895pao.com" target="_blank">欧美黄色免费</a>| <a href="http://6767673.com" target="_blank">99精品视频免费全部在线</a>| <a href="http://9928k.com" target="_blank">这里只有精品在线播放</a>| <a href="http://chaoporn97.com" target="_blank">国产精品美女久久久免费</a>| <a href="http://yjizzdizhigmail.com" target="_blank">欧美中文字幕不卡</a>| <a href="http://xvideoav99.com" target="_blank">久久gogo国模啪啪人体图</a>| <a href="http://414794.com" target="_blank">欧美一激情一区二区三区</a>| <a href="http://xaxkizlar.com" target="_blank">久久久久国色av免费看影院 </a>| <a href="http://wce-expo.com" target="_blank">在线视频免费在线观看一区二区</a>| <a href="http://jsydjxgs.com" target="_blank">欧美一级午夜免费电影</a>| <a href="http://lgaoxiao.com" target="_blank">亚洲永久视频</a>| <a href="http://wwdd44.com" target="_blank">久久亚洲影院</a>| <a href="http://atmub.com" target="_blank">国产一区在线看</a>| <a href="http://621767.com" target="_blank">欧美一二三视频</a>| <a href="http://playav111.com" target="_blank">久久国产视频网站</a>| <a href="http://nvpuwo22.com" target="_blank">激情久久久久久久久久久久久久久久</a>| <a href="http://1194123.com" target="_blank">亚洲国产精品一区二区第一页 </a>| <a href="http://cnbluebox.com" target="_blank">尤物网精品视频</a>| <a href="http://lymzdd.com" target="_blank">欧美成va人片在线观看</a>| <a href="http://dracotek.com" target="_blank">国产欧美一区二区三区在线看蜜臀</a>| <a href="http://aaddgg66.com" target="_blank">欧美中文字幕不卡</a>| <a href="http://www278999.com" target="_blank">日韩一级成人av</a>| <a href="http://9lunli.com" target="_blank">欧美 日韩 国产 一区</a>| <a href="http://saobitv.com" target="_blank">欧美亚洲在线观看</a>| <a href="http://xingmaipet.com" target="_blank">99在线热播精品免费</a>| <a href="http://by56677.com" target="_blank">精品电影一区</a>| <a href="http://tk263.com" target="_blank">国产精品伦子伦免费视频</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>