锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
strlen涓巗izeof鐨勫尯鍒?br />
2.sizeof鏄畻絎︼紝strlen鏄嚱鏁般?
3.sizeof鍙互鐢ㄧ被鍨嬪仛鍙傛暟錛宻trlen鍙兘鐢╟har*鍋氬弬鏁幫紝涓斿繀欏繪槸浠?'\0''緇撳熬鐨勩?/p>
4.鏁扮粍鍋歴izeof鐨勫弬鏁頒笉閫鍖栵紝浼犻掔粰strlen灝遍鍖栦負鎸囬拡浜嗐?
5.澶ч儴鍒嗙紪璇戠▼搴忓湪緙栬瘧鐨勬椂鍊欏氨鎶妔izeof璁$畻榪囦簡 鏄被鍨嬫垨鏄彉閲忕殑闀垮害榪欏氨鏄痵izeof(x)鍙互鐢ㄦ潵瀹氫箟鏁扮粍緇存暟鐨勫師鍥?
char str[20]="0123456789";//str鏄紪璇戞湡澶у皬宸茬粡鍥哄畾鐨勬暟緇?br />int a=strlen(str); //a=10;//strlen()鍦ㄨ繍琛岃搗紜畾
int b=sizeof(str); //鑰宐=20;//sizeof()鍦ㄧ紪璇戞湡紜畾
6.strlen鐨勭粨鏋滆鍦ㄨ繍琛岀殑鏃跺欐墠鑳借綆楀嚭鏉ワ紝鏄敤鏉ヨ綆楀瓧絎︿覆鐨勫疄闄呴暱搴︼紝涓嶆槸綾誨瀷鍗犲唴瀛樼殑澶у皬銆?
7.sizeof鍚庡鏋滄槸綾誨瀷蹇呴』鍔犳嫭寮э紝濡傛灉鏄彉閲忓悕鍙互涓嶅姞鎷姬銆傝繖鏄洜涓簊izeof鏄釜鎿嶄綔絎︿笉鏄釜鍑芥暟銆?br />聽char c;
聽sizeof c;//鍙橀噺鍚嶅彲浠ヤ笉鍔犳嫭寮?/strong>
聽
8.褰撻傜敤浜嗕簬涓涓粨鏋勭被鍨嬫椂鎴栧彉閲忥紝 sizeof 榪斿洖瀹為檯鐨勫ぇ灝忥紝
聽褰撻傜敤涓闈欐佸湴絀洪棿鏁扮粍錛?sizeof 褰掕繕鍏ㄩ儴鏁扮粍鐨勫昂瀵搞?br />聽sizeof 鎿嶄綔絎︿笉鑳借繑鍥炲姩鎬佸湴琚垎媧句簡鐨勬暟緇勬垨澶栭儴鐨勬暟緇勭殑灝哄
9.鏁扮粍浣滀負鍙傛暟浼犵粰鍑芥暟鏃朵紶鐨勬槸鎸囬拡鑰屼笉鏄暟緇勶紝浼犻掔殑鏄暟緇勭殑棣栧湴鍧錛?br />濡傦細
fun(char [8])
fun(char [])
閮界瓑浠蜂簬 fun(char *)
鍦–++閲屽弬鏁頒紶閫掓暟緇勬案榪滈兘鏄紶閫掓寚鍚戞暟緇勯鍏冪礌鐨勬寚閽堬紝緙栬瘧鍣ㄤ笉鐭ラ亾鏁扮粍鐨勫ぇ灝?br />濡傛灉鎯沖湪鍑芥暟鍐呯煡閬撴暟緇勭殑澶у皬錛?闇瑕佽繖鏍峰仛錛?br />榪涘叆鍑芥暟鍚庣敤memcpy鎷瘋礉鍑烘潵錛岄暱搴︾敱鍙︿竴涓艦鍙備紶榪涘幓
fun(unsiged char *p1, int len)
{
聽 unsigned char* buf = new unsigned char[len+1]
聽 memcpy(buf, p1, len);
}
鎴戜滑鑳藉父鍦ㄧ敤鍒?sizeof 鍜?strlen 鐨勬椂鍊欙紝閫氬父鏄綆楀瓧絎︿覆鏁扮粍鐨勯暱搴?br />鐪嬩簡涓婇潰鐨勮緇嗚В閲婏紝鍙戠幇涓よ呯殑浣跨敤榪樻槸鏈夊尯鍒殑錛屼粠榪欎釜渚嬪瓙鍙互鐪嬪緱寰堟竻妤氾細
har str[11]="0123456789";//娉ㄦ剰榪欓噷str澶у皬鍥犺澶т簬絳変簬11錛屽簲鑰冭檻'\0'鍦ㄥ唴錛屽惁鍒欑紪璇戝櫒浼氭姤閿?br />int a=strlen(str); //a=10; >>>> strlen 璁$畻瀛楃涓茬殑闀垮害錛屼互緇撴潫絎?0x00 涓哄瓧絎︿覆緇撴潫銆?br />int b=sizeof(str); //鑰宐=11; >>>> sizeof 璁$畻鐨勫垯鏄垎閰嶇殑鏁扮粍 str[11] 鎵鍗犵殑鍐呭瓨絀洪棿鐨勫ぇ灝忥紝涓嶅彈閲岄潰瀛樺偍鐨勫唴瀹規敼鍙樸偮?
涓婇潰鏄闈欐佹暟緇勫鐞嗙殑緇撴灉錛屽鏋滄槸瀵規寚閽堬紝緇撴灉灝變笉涓鏍蜂簡
char* ss = "0123456789";
sizeof(ss) 緇撴灉 4 錛濓紳錛濄媠s鏄寚鍚戝瓧絎︿覆甯擱噺鐨勫瓧絎︽寚閽堬紝sizeof 鑾峰緱鐨勬槸涓涓寚閽堢殑涔嬫墍鍗犵殑絀洪棿,搴旇鏄暱鏁村瀷鐨勶紝鎵浠ユ槸4
sizeof(*ss) 緇撴灉 1 錛濓紳錛濄?ss鏄涓涓瓧絎?鍏跺疄灝辨槸鑾峰緱浜嗗瓧絎︿覆鐨勭涓浣?0' 鎵鍗犵殑鍐呭瓨絀洪棿錛屾槸char綾誨瀷鐨勶紝鍗犱簡 1 浣峴trlen(ss)= 10 >>>> 濡傛灉瑕佽幏寰楄繖涓瓧絎︿覆鐨勯暱搴︼紝鍒欎竴瀹氳浣跨敤 strlen
鍙﹀,涓嬮潰鐨勬柟娉曞彲浠ョ敤浜庣‘瀹氳闈欐佹暟緇勫彲浠ュ綰沖厓绱犵殑涓暟錛?br />int a[3]={1,2,3};
cout << sizeof a/sizeof ( typeid( a[0] ).name() );
UNICODE緙栬瘧璁劇疆錛?br />C/C++, Preprocessor difinitions 鍘婚櫎_MBCS錛屽姞_UNICODE,UNICODE
鍦≒rojectSetting/link/output 涓緗瓻ntry涓簑WinMainCRTStartup
鍙嶄箣涓篗BCS錛圓NSI錛夌紪璇戙?/p>
Unicode 錛氬瀛楄妭瀛楃闆?/p>
1. 濡備綍鍙栧緱涓涓棦鍖呭惈鍗曞瓧鑺傚瓧絎﹀張鍖呭惈鍙屽瓧鑺傚瓧絎︾殑瀛楃涓茬殑瀛楃涓暟錛?br />鍙互璋冪敤Microsoft Visual C++鐨勮繍琛屾湡搴撳寘鍚嚱鏁癬mbslen鏉ユ搷浣滃瀛楄妭錛堟棦鍖呮嫭鍗曞瓧鑺備篃鍖呮嫭鍙屽瓧鑺傦級瀛楃涓層?br />璋冪敤strlen鍑芥暟錛屾棤娉曠湡姝d簡瑙e瓧絎︿覆涓┒绔熸湁澶氬皯瀛楃錛屽畠鍙兘鍛婅瘔浣犲埌杈劇粨灝劇殑0涔嬪墠鏈夊灝戜釜瀛楄妭銆?/p>
2. 濡備綍瀵笵BCS錛堝弻瀛楄妭瀛楃闆嗭級瀛楃涓茶繘琛屾搷浣滐紵
鍑芥暟 鎻忚堪
PTSTR CharNext 錛?LPCTSTR 錛? 榪斿洖瀛楃涓蹭腑涓嬩竴涓瓧絎︾殑鍦板潃
PTSTR CharPrev 錛?LPCTSTR, LPCTSTR 錛夛紱 榪斿洖瀛楃涓蹭腑涓婁竴涓瓧絎︾殑鍦板潃
BOOL IsDBCSLeadByte( BYTE )錛?濡傛灉璇ュ瓧鑺傛槸DBCS瀛楃鐨勭涓涓瓧鑺傦紝鍒欒繑鍥為潪0鍊?/p>
3. 涓轟粈騫鴻浣跨敤Unicode錛?br />錛?錛?鍙互寰堝鏄撳湴鍦ㄤ笉鍚岃璦涔嬮棿榪涜鏁版嵁浜ゆ崲銆?br />錛?錛?浣夸綘鑳藉鍒嗛厤鏀寔鎵鏈夎璦鐨勫崟涓簩榪涘埗.exe鏂囦歡鎴朌LL鏂囦歡銆?br />錛?錛?鎻愰珮搴旂敤紼嬪簭鐨勮繍琛屾晥鐜囥?br />Windows 2000鏄嬌鐢║nicode浠庡ご榪涜寮鍙戠殑錛屽鏋滆皟鐢ㄤ換浣曚竴涓猈indows鍑芥暟騫剁粰瀹冧紶閫掍竴涓狝NSI瀛楃涓詫紝閭e購緋葷粺棣栧厛瑕佸皢瀛楃涓茶漿鎹㈡垚Unicode錛岀劧鍚庡皢Unicode瀛楃涓蹭紶閫掔粰鎿嶄綔緋葷粺銆傚鏋滃笇鏈涘嚱鏁拌繑鍥濧NSI瀛楃涓詫紝緋葷粺灝變細棣栧厛灝哢nicode瀛楃涓茶漿鎹㈡垚ANSI瀛楃涓詫紝鐒跺悗灝嗙粨鏋滆繑鍥炵粰浣犵殑搴旂敤紼嬪簭銆傝繘琛岃繖浜涘瓧絎︿覆鐨勮漿鎹㈤渶瑕佸崰鐢ㄧ郴緇熺殑鏃墮棿鍜屽唴瀛樸傞氳繃浠庡ご寮濮嬬敤Unicode鏉ュ紑鍙戝簲鐢ㄧ▼搴忥紝灝辮兘澶熶嬌浣犵殑搴旂敤紼嬪簭鏇村姞鏈夋晥鍦拌繍琛屻?br />Windows CE 鏈韓灝辨槸浣跨敤Unicode鐨勪竴縐嶆搷浣滅郴緇燂紝瀹屽叏涓嶆敮鎸丄NSI Windows鍑芥暟
Windows 98 鍙敮鎸丄NSI錛屽彧鑳戒負ANSI寮鍙戝簲鐢ㄧ▼搴忋?br />Microsoft鍏徃灝咰OM浠?6浣峎indows杞崲鎴怶in32鏃訛紝鍏徃鍐沖畾闇瑕佸瓧絎︿覆鐨勬墍鏈塁OM鎺ュ彛鏂規硶閮藉彧鑳芥帴鍙桿nicode瀛楃涓層?/p>
4. 濡備綍緙栧啓Unicode婧愪唬鐮侊紵
Microsoft鍏徃涓篣nicode璁捐浜哤indowsAPI錛岃繖鏍鳳紝鍙互灝介噺鍑忓皯浠g爜鐨勫獎鍝嶃傚疄闄呬笂錛屽彲浠ョ紪鍐欏崟涓簮浠g爜鏂囦歡錛屼互渚夸嬌鐢ㄦ垨鑰呬笉浣跨敤Unicode鏉ュ瀹冭繘琛岀紪璇戙傚彧闇瑕佸畾涔変袱涓畯錛圲NICODE鍜宊UNICODE錛夛紝灝卞彲浠ヤ慨鏀圭劧鍚庨噸鏂扮紪璇戣婧愭枃浠躲?br />_UNICODE瀹忕敤浜嶤榪愯鏈熷ご鏂囦歡錛岃孶NICODE瀹忓垯鐢ㄤ簬Windows澶存枃浠躲傚綋緙栬瘧婧愪唬鐮佹ā鍧楁椂錛岄氬父蹇呴』鍚屾椂瀹氫箟榪欎袱涓畯銆?/p>
5. Windows瀹氫箟鐨刄nicode鏁版嵁綾誨瀷鏈夊摢浜涳紵
鏁版嵁綾誨瀷 璇存槑
WCHAR Unicode瀛楃
PWSTR 鎸囧悜Unicode瀛楃涓茬殑鎸囬拡
PCWSTR 鎸囧悜涓涓亽瀹氱殑Unicode瀛楃涓茬殑鎸囬拡
瀵瑰簲鐨凙NSI鏁版嵁綾誨瀷涓篊HAR錛孡PSTR鍜孡PCSTR銆?br />ANSI/Unicode閫氱敤鏁版嵁綾誨瀷涓篢CHAR錛孭TSTR,LPCTSTR銆?/p>
6. 濡備綍瀵筓nicode榪涜鎿嶄綔錛?br />瀛楃闆?鐗規?瀹炰緥
ANSI 鎿嶄綔鍑芥暟浠tr寮澶?strcpy
Unicode 鎿嶄綔鍑芥暟浠cs寮澶?wcscpy
MBCS 鎿嶄綔鍑芥暟浠mbs寮澶?_mbscpy
ANSI/Unicode 鎿嶄綔鍑芥暟浠tcs寮澶?_tcscpy錛圕榪愯鏈熷簱錛?br />ANSI/Unicode 鎿嶄綔鍑芥暟浠str寮澶?lstrcpy錛圵indows鍑芥暟錛?br />鎵鏈夋柊鐨勫拰鏈繃鏃剁殑鍑芥暟鍦╓indows2000涓兘鍚屾椂鎷ユ湁ANSI鍜孶nicode涓や釜鐗堟湰銆侫NSI鐗堟湰鍑芥暟緇撳熬浠琛ㄧず錛沀nicode鐗堟湰鍑芥暟緇撳熬浠琛ㄧず銆俉indows浼氬涓嬪畾涔夛細
#ifdef UNICODE
#define CreateWindowEx CreateWindowExW
#else
#define CreateWindowEx CreateWindowExA
#endif // !UNICODE
7. 濡備綍琛ㄧずUnicode瀛楃涓插父閲忥紵
瀛楃闆?瀹炰緥
ANSI 鈥渟tring鈥?br />Unicode L鈥渟tring鈥?br />ANSI/Unicode T(鈥渟tring鈥?鎴朹TEXT(鈥渟tring鈥?if( szError[0] == _TEXT(鈥楯鈥? ){ }
8. 涓轟粈騫哄簲褰撳敖閲忎嬌鐢ㄦ搷浣滅郴緇熷嚱鏁幫紵
榪欏皢鏈夊姪浜庣◢紼嶆彁楂樺簲鐢ㄧ▼搴忕殑榪愯鎬ц兘錛屽洜涓烘搷浣滅郴緇熷瓧絎︿覆鍑芥暟甯稿父琚ぇ鍨嬪簲鐢ㄧ▼搴忔瘮濡傛搷浣滅郴緇熺殑澶栧3榪涚▼Explorer.exe鎵浣跨敤銆傜敱浜庤繖浜涘嚱鏁頒嬌鐢ㄥ緱寰堝錛屽洜姝わ紝鍦ㄥ簲鐢ㄧ▼搴忚繍琛屾椂錛屽畠浠彲鑳藉凡緇忚瑁呭叆RAM銆?br />濡傦細StrCat錛孲trChr錛孲trCmp鍜孲trCpy絳夈?/p>
9. 濡備綍緙栧啓絎﹀悎ANSI鍜孶nicode鐨勫簲鐢ㄧ▼搴忥紵
錛?錛?灝嗘枃鏈覆瑙嗕負瀛楃鏁扮粍錛岃屼笉鏄痗hars鏁扮粍鎴栧瓧鑺傛暟緇勩?br />錛?錛?灝嗛氱敤鏁版嵁綾誨瀷錛堝TCHAR鍜孭TSTR錛夌敤浜庢枃鏈瓧絎﹀拰瀛楃涓層?br />錛?錛?灝嗘樉寮忔暟鎹被鍨嬶紙濡侭YTE鍜孭BYTE錛夌敤浜庡瓧鑺傘佸瓧鑺傛寚閽堝拰鏁版嵁緙撳瓨銆?br />錛?錛?灝員EXT瀹忕敤浜庡師涔夊瓧絎﹀拰瀛楃涓層?br />錛?錛?鎵ц鍏ㄥ眬鎬ф浛鎹紙渚嬪鐢≒TSTR鏇挎崲PSTR錛夈?br />錛?錛?淇敼瀛楃涓茶繍綆楅棶棰樸備緥濡傚嚱鏁伴氬父甯屾湜鍦ㄥ瓧絎︿腑浼犻掍竴涓紦瀛樼殑澶у皬錛岃屼笉鏄瓧鑺傘傝繖鎰忓懗鐫涓嶅簲璇ヤ紶閫抯izeof(szBuffer),鑰屽簲璇ヤ紶閫掞紙sizeof(szBuffer)/sizeof(TCHAR)銆傚彟澶栵紝濡傛灉闇瑕佷負瀛楃涓插垎閰嶄竴涓唴瀛樺潡錛屽茍涓旀嫢鏈夎瀛楃涓蹭腑鐨勫瓧絎︽暟鐩紝閭e購璇瘋浣忚鎸夊瓧鑺傛潵鍒嗛厤鍐呭瓨銆傝繖灝辨槸璇達紝搴旇璋冪敤
malloc(nCharacters *sizeof(TCHAR)),鑰屼笉鏄皟鐢╩alloc(nCharacters)銆?/p>
10. 濡備綍瀵瑰瓧絎︿覆榪涜鏈夐夋嫨鐨勬瘮杈冿紵
閫氳繃璋冪敤CompareString鏉ュ疄鐜般?br />鏍囧織 鍚箟
NORM_IGNORECASE 蹇界暐瀛楁瘝鐨勫ぇ灝忓啓
NORM_IGNOREKANATYPE 涓嶅尯鍒嗗鉤鍋囧悕涓庣墖鍋囧悕瀛楃
NORM_IGNORENONSPACE 蹇界暐鏃犻棿闅斿瓧絎?br />NORM_IGNORESYMBOLS 蹇界暐絎﹀彿
NORM_IGNOREWIDTH 涓嶅尯鍒嗗崟瀛楄妭瀛楃涓庝綔涓哄弻瀛楄妭瀛楃鐨勫悓涓涓瓧絎?br />SORT_STRINGSORT 灝嗘爣鐐圭鍙蜂綔涓烘櫘閫氱鍙鋒潵澶勭悊
11. 濡備綍鍒ゆ柇涓涓枃鏈枃浠舵槸ANSI榪樻槸Unicode錛?br />鍒ゆ柇濡傛灉鏂囨湰鏂囦歡鐨勫紑澶翠袱涓瓧鑺傛槸0xFF鍜?xFE錛岄偅騫哄氨鏄疷nicode錛屽惁鍒欐槸ANSI銆?/p>
12. 濡備綍鍒ゆ柇涓孌靛瓧絎︿覆鏄疉NSI榪樻槸Unicode錛?br />鐢↖sTextUnicode榪涜鍒ゆ柇銆侷sTextUnicode浣跨敤涓緋誨垪緇熻鏂規硶鍜屽畾鎬ф柟娉曪紝浠ヤ究鐚滄祴緙撳瓨鐨勫唴瀹廣傜敱浜庤繖涓嶆槸涓縐嶇‘鍒囩殑縐戝鏂規硶錛屽洜姝?IsTextUnicode鏈夊彲鑳借繑鍥炰笉姝g‘鐨勭粨鏋溿?/p>
13. 濡備綍鍦║nicode涓嶢NSI涔嬮棿杞崲瀛楃涓詫紵
Windows鍑芥暟MultiByteToWideChar鐢ㄤ簬灝嗗瀛楄妭瀛楃涓茶漿鎹㈡垚瀹藉瓧絎︿覆錛涘嚱鏁癢ideCharToMultiByte灝嗗瀛楃涓茶漿鎹㈡垚絳変環鐨勫瀛楄妭瀛楃涓層?/p>
14. Unicode鍜孌BCS涔嬮棿鐨勫尯鍒?br />Unicode浣跨敤錛堢壒鍒湪C紼嬪簭璁捐璇█鐜閲岋級鈥滃瀛楃闆嗏濄傘孶nicode涓殑姣忎釜瀛楃閮芥槸16浣嶅鑰屼笉鏄?浣嶅銆傘嶅湪Unicode涓紝娌℃湁鍗曞崟浣跨敤8浣嶆暟鍊肩殑鎰忎箟瀛樺湪銆傜浉姣斾箣涓嬶紝鍦ㄢ滃弻浣嶇粍瀛楃闆嗏濅腑鎴戜滑浠嶇劧澶勭悊8浣嶆暟鍊箋傛湁浜涗綅緇勮嚜韜畾涔夊瓧絎︼紝鑰屾煇浜涗綅緇勫垯鏄劇ず闇瑕佸拰鍙︿竴涓綅緇勫叡鍚屽畾涔変竴涓瓧絎︺?br />澶勭悊DBCS瀛楃涓查潪甯告潅涔憋紝浣嗘槸澶勭悊Unicode鏂囧瓧鍒欏儚澶勭悊鏈夌З搴忕殑鏂囧瓧銆傛偍涔熻浼氶珮鍏村湴鐭ラ亾鍓?28涓猆nicode瀛楃錛?6浣嶄唬鐮佷粠0x0000鍒?x007F錛夊氨鏄疉SCII瀛楃錛岃屾帴涓嬫潵鐨?28涓猆nicode瀛楃錛堜唬鐮佷粠0x0080鍒?x00FF錛夋槸ISO 8859-1瀵笰SCII鐨勬墿灞曘俇nicode涓笉鍚岄儴鍒嗙殑瀛楃閮藉悓鏍峰熀浜庣幇鏈夌殑鏍囧噯銆傝繖鏄負浜嗕究浜庤漿鎹€傚笇鑵婂瓧姣嶈〃浣跨敤浠?x0370鍒?x03FF鐨勪唬鐮侊紝鏂媺澶浣跨敤浠?x0400鍒?x04FF鐨勪唬鐮侊紝緹庡浗浣跨敤浠?x0530鍒?x058F鐨勪唬鐮侊紝甯屼集鏉ヨ浣跨敤浠?x0590鍒?x05FF鐨勪唬鐮併備腑鍥姐佹棩鏈拰闊╁浗鐨勮薄褰㈡枃瀛楋紙鎬葷О涓篊JK錛夊崰鐢ㄤ簡浠?x3000鍒?x9FFF鐨勪唬鐮併俇nicode鐨勬渶澶уソ澶勬槸榪欓噷鍙湁涓涓瓧絎﹂泦錛屾病鏈変竴鐐瑰惈緋娿?/p>
15.琛嶇敓鏍囧噯
Unicode鏄竴涓爣鍑嗐俇TF-8鏄叾姒傚康涓婄殑瀛愰泦錛孶TF-8鏄叿浣撶殑緙栫爜鏍囧噯銆傝岋嫉錛緝錛o集錛わ譏鏄墍鏈夋兂杈懼埌涓栫晫緇熶竴緙栫爜鏍囧噯鐨勬爣鍑嗐俇TF-8鏍囧噯灝辨槸Unicode錛圛SO10646錛夋爣鍑嗙殑涓縐嶅彉褰㈡柟寮忥紝
UTF鐨勫叏縐版槸錛歎nicode/UCS Transformation Format錛屽叾瀹炴湁涓ょUTF錛屼竴縐嶆槸UTF-8錛屼竴縐嶆槸UTF-16錛?
涓嶈繃UTF-16浣跨敤杈冨皯錛屽叾瀵瑰簲鍏崇郴濡備笅錛?br />鍦║nicode涓紪鐮佷負 0000 - 007F 鐨?UTF-8 涓紪鐮佸艦寮忎負: 0xxxxxxx
鍦║nicode涓紪鐮佷負 0080 - 07FF 鐨?UTF-8 涓紪鐮佸艦寮忎負: 110xxxxx 10xxxxxx
鍦║nicode涓紪鐮佷負 0000 - 007F 鐨?UTF-8 涓紪鐮佸艦寮忎負: 1110xxxx 10xxxxxx 10xxxxxx
utf-8鏄痷nicode鐨勪竴涓柊鐨勭紪鐮佹爣鍑?鍏跺疄unicode鏈夎繃濂藉嚑涓爣鍑?鎴戜滑鐭ラ亾涓鐩翠互鏉ヤ嬌鐢ㄧ殑unicode瀛楃鍐呯爜閮芥槸16浣?瀹冨疄闄呬笂榪樹笉鑳芥妸鍏ㄤ笘鐣岀殑鎵鏈夊瓧絎︾紪鍦ㄤ竴涓鉤闈㈢郴緇?姣斿涓浗鐨勮棌鏂囩瓑灝忚縐?鎵浠tf-8鎵╁睍鍒頒簡32浣?涔熷氨鏄鐞嗚鍦╱tf-8涓彲瀹圭撼浜岀殑涓夊崄浜屾鏂逛釜瀛楃. UNICODE鐨勬濇兂灝辨槸鎯蟲妸鎵鏈夌殑瀛楃緇熶竴緙栫爜,瀹炵幇涓涓粺涓鐨勬爣鍑?big5銆乬b閮芥槸鐙珛鐨勫瓧絎﹂泦,榪欎篃鍙仛榪滀笢瀛楃闆?鎶婂畠鎷垮埌寰鋒枃鐗堢殑WINDOWS涓婂彲鑳藉皢浼氬紩璧峰瓧絎︾紪鐮佺殑鍐茬獊....鏃╂湡鐨刉INDOWS榛樿鐨勫瓧絎﹂泦鏄疉NSI.notepad涓緭鍏ョ殑姹夊瓧鏄湰鍦扮紪鐮?浣嗗湪NT/2000鍐呴儴鏄彲浠ョ洿鎺ユ敮鎸乁NICODE鐨勩俷otepad.exe鍦╓IN95鍜?8涓兘鏄疉NSI瀛楃,鍦∟T涓垯鏄疷NICODE.ANSI鍜孶NICODE鍙互鏂逛究鐨勫疄鐜板搴旀槧灝?涔熷氨鏄漿鎹?ASCII鏄?浣嶈寖鍥村唴鐨勫瓧絎﹂泦錛屽浜庤寖鍥翠箣澶栫殑瀛楃濡傛眽瀛楀畠鏄棤娉曡〃杈劇殑銆倁nicode鏄?6浣嶈寖鍥村唴鐨勫瓧絎﹂泦錛屽浜庝笉鍚屽湴鍖虹殑瀛楃鍒嗗尯鍒嗛厤錛寀nicode鏄涓狪T宸ㄥご鍏卞悓鍒跺畾鐨勫瓧絎︾紪鐮佹爣鍑嗐傚鏋滃湪unicode鐜涓嬫瘮濡俉INDOWS NT涓婏紝涓涓瓧絎﹀崰涓ゅ瓧鑺?6浣嶏紝鑰屽湪ANSI鐜涓嬪WINDOWS98涓嬩竴涓瓧絎﹀崰涓涓瓧鑺?浣?Unicode瀛楃鏄?6浣嶅錛屾渶澶氬厑璁?5,535瀛楃錛屾暟鎹被鍨嬭縐頒負WCHAR銆?
瀵逛簬宸叉湁鐨凙NSI瀛楃錛寀nicode綆鍗曠殑灝嗗叾鎵╁睍涓?6浣嶏細姣斿ANSI"A"=0x43,鍒欏搴旂殑UNICODE涓?br />"A"= 0x0043
鑰孉SCII鐢ㄤ竷瀛樻斁128涓瓧絎?ASCII鏄竴涓湡姝g殑緹庡浗鏍囧噯,鎵浠ュ畠涓嶈兘婊¤凍鍏朵粬鍥藉鐨勯渶瑕?渚嬪鏂媺澶鐨勫瓧姣嶅拰姹夊瓧浜庢槸鍑虹幇浜哤indows ANSI瀛楃闆?鏄竴縐嶆墿灞曠殑ASCII鐮?鐢?浣嶅瓨鏀懼瓧絎?浣?28浣嶄粛鐒跺瓨鏀懼師鏉ョ殑ASCII鐮?
鑰岄珮128浣嶅姞鍏ヤ簡甯岃厞瀛楁瘝絳?br />if def UNICODE
聽 TCHAR = wchar
else
聽 TCHAR = char
浣犻渶瑕佸湪Project\Settings\C/C++\Preprocesser definitions涓坊鍔燯NICODE鍜宊UNICODE
UINCODE,_UNICODE閮借瀹氫箟銆備笉瀹氫箟_UNICODE鐨勮瘽錛岀敤SetText(HWND,LPCTSTR),灝嗚瑙i噴涓篠etTextA(HWND,LPTSTR),榪欐椂API灝嗘妸浣犵粰鐨刄nicode瀛楃涓茬湅浣淎NSI瀛楃涓詫紝鏄劇ず涔辯爜銆傚洜涓簑indows API鏄凡緇忕紪璇戝ソ瀛樺湪浜巇ll涓殑錛岀敱浜庝笉綆NICODE榪樻槸ANSI瀛楃涓詫紝閮借鐪嬩綔涓孌礲uffer,濡?0B A3 00 35 24 3C 00 00"濡傛灉鎸堿NSI璇伙紝鍥犱負ANSI瀛椾覆鏄互'\0'緇撴潫鐨勶紝鎵浠ュ彧鑳借鍒頒袱瀛楄妭"0B A3 \0"錛屽鏋滄寜UNICODE璇伙紝灝嗗畬鏁寸殑璇誨埌'\0\0'緇撴潫銆?br />鐢變簬UNICODE娌℃湁棰濆鐨勬寚紺轟綅錛屾墍浠ョ郴緇熷繀欏葷煡閬撲綘鎻愪緵鐨勫瓧涓叉槸鍝鏍煎紡銆傛澶栵紝UNICODE濂借薄鏄疉NSI C++瑙勫畾鐨勶紝_UNICODE鏄痺indows SDK鎻愪緵鐨勩傚鏋滀笉緙栧啓windows紼嬪簭錛屽彲浠ュ彧瀹氫箟UNICODE銆?br />寮鍙戣繃紼嬶細
鍥寸粫鐫鏂囦歡璇誨啓銆佸瓧絎︿覆澶勭悊灞曞紑銆傛枃浠朵富瑕佹湁涓ょ錛?txt鍜?ini鏂囦歡
1.聽聽聽 鍦╱nicode鍜岄潪unicode鐜涓嬪瓧絎︿覆鍋氫笉鍚屽鐞嗙殑錛岄偅涔堥渶瑕佸弬鑰冧互涓?錛?0涓ゆ潯錛屼互閫傚簲涓嶅悓鐜寰楀瓧絎︿覆澶勭悊瑕佹眰銆?br />瀵規枃浠惰鍐欎篃涓鏍楓傚彧瑕佽皟鐢ㄧ浉鍏蟲帴鍙e嚱鏁版椂錛屽弬鏁頒腑鐨勫瓧絎︿覆鍓嶉兘鍔犱笂_TEXT絳夌浉鍏沖畯銆傚鏋滃啓鎴愮殑閭d釜鏂囦歡闇瑕佹槸unicode鏍煎紡淇濆瓨鐨勶紝閭d箞鍦ㄥ垱寤烘枃浠舵椂闇瑕佸姞鍏ヤ竴涓瓧鑺傚ご銆?br />CFile file;
聽聽聽 WCHAR szwBuffer[128];
聽聽聽
聽聽聽 WCHAR *pszUnicode = L"Unicode string\n"; // unicode string
聽聽聽 CHAR *pszAnsi = "Ansi string\n"; // ansi string
聽聽聽 WORD wSignature = 0xFEFF;
聽聽聽
聽聽聽 file.Open(TEXT("Test.txt"), CFile::modeCreate|CFile::modeWrite);
聽聽聽
聽聽聽 file.Write(&wSignature, 2);
聽聽聽
聽聽聽 file.Write(pszUnicode, lstrlenW(pszUnicode) * sizeof(WCHAR));
聽聽聽 // explicitly use lstrlenW function
聽聽聽
聽聽聽 MultiByteToWideChar(CP_ACP, 0, pszAnsi, -1, szwBuffer, 128);
聽聽聽
聽聽聽 file.Write(szwBuffer, lstrlenW(szwBuffer) * sizeof(WCHAR));
聽聽聽
file.Close();
//浠ヤ笂榪欐浠g爜鍦╱nicode鍜岄潪unicode鐜涓嬮兘鏈夋晥銆傝繖閲屾樉寮忕殑鎸囨槑鐢║nicode鏉ヨ繘琛屾搷浣溿?br />2.聽聽聽 鍦ㄩ潪unicode鐜涓嬶紝緙虹渷璋冪敤鐨勯兘鏄疉NSI鏍煎紡鐨勫瓧絎︿覆錛屾鏃禩CHAR杞崲涓篊HAR綾誨瀷鐨勶紝闄ら潪鏄懼紡瀹氫箟WCHAR銆傛墍浠ュ湪榪欎釜鐜涓嬶紝濡傛灉璇誨彇unicode鏂囦歡錛岄偅涔堥鍏堥渶瑕佺Щ鍔?涓瓧鑺傦紝鐒跺悗璇誨彇寰楀瓧絎︿覆闇瑕佺敤MultiByteToWideChar鏉ヨ漿鎹紝杞崲鍚庡瓧絎︿覆淇℃伅鎵嶄唬琛╱nicode鏁版嵁銆?br />3.聽聽聽 鍦╱nicode鐜涓嬶紝緙虹渷璋冪敤寰楅兘鏄痷nicode鏍煎紡寰楀瓧絎︿覆錛屼篃灝辨槸瀹藉瓧絎︼紝姝ゆ椂TCHAR杞崲涓篧CHAR錛岀浉鍏沖緱API鍑芥暟涔熼兘璋冪敤瀹藉瓧絎︾被鍨嬬殑鍑芥暟銆傛鏃惰鍙杣nicode鏂囦歡涔熷拰涓婇潰涓鏍鳳紝浣嗘槸璇誨彇寰楁暟鎹槸WCHAR鐨勶紝濡傛灉瑕佽漿鎹㈡垚ANSI鏍煎紡錛岄渶瑕佽皟鐢╓ideCharToMultiByte銆傚鏋滆鍙朅NSI鐨勶紝鍒欎笉鐢ㄧЩ鍔ㄤ袱涓瓧鑺傦紝鐩存帴璇誨彇鐒跺悗瑙嗛渶瑕佽漿鎹㈠嵆鍙?/p>
鏌愪簺璇█錛堝闊╄錛夊繀欏誨湪unicode鐜涓嬫墠鑳芥樉紺猴紝榪欑鎯呭喌涓嬶紝鍦ㄩ潪unicode鐜涓嬪紑鍙戯紝灝辯畻鐢ㄥ瓧絎︿覆鍑芥暟杞崲涔熶笉鑳借揪鍒版樉紺烘枃瀛楃殑鐩殑錛屽洜涓烘鏃惰皟鐢ㄥ緱API鍑芥暟鏄敤ANSI鐨勶紙铏界劧搴曞眰閮芥槸鐢║NICODE澶勭悊浣嗘槸澶勭悊緇撴灉鏄寜鐓х▼搴忓憳璋冪敤鐨凙PI鏉ユ樉紺虹殑錛夈傛墍浠ュ繀欏葷敤unicode鏉ュ紑鍙戙?br />
1錛?span style="FONT: 7pt 'Times New Roman'">聽 棰勭紪璇戝櫒灝嗙▼搴忔鏂囦腑灝嗘墍閬囧埌鐨勫畯鍚嶅睍寮鎴愬畯瀹氫箟銆?/span>
#define PI 3.1415926
2錛?span style="FONT: 7pt 'Times New Roman'">聽 鍙互瀹氫箟甯﹀弬鏁扮殑瀹忥紝鍏鋒湁妯℃澘鐨勯儴鍒嗗姛鑳斤紝浣嗘槸鏈濂藉皢瀹忓弬鏁扮敤鎷彿鎷搗鏉ャ?/span>
#define MIN(a,b) (((a)<(b))?(a):(b))
3錛?span style="FONT: 7pt 'Times New Roman'">聽 閫氳繃 ## 瀹忚繍綆楃鍙互鎷兼帴璧蜂袱涓覆銆?/span>
#define NAME 錛?/span> a,b 錛?/span> a##b
4錛?span style="FONT: 7pt 'Times New Roman'">聽 #undef X 淇濊瘉涓嶅啀鏈夌О涓?/span> X 鐨勬湁瀹氫箟鐨勫畯銆?/span>
5錛?span style="FONT: 7pt 'Times New Roman'">聽 涓縐嶇壒孌婄殑瀹忥細鏉′歡緙栬瘧銆?/span>
#ifdef MACRO_NAME
鈥?鈥?/span>
#endif
鎰忔濇槸錛氶櫎闈炲簲緇忓畾涔変簡鍚嶄負 MACRO_NAME 鐨勫畯錛屽惁鍒?/span> #ifdef 涓?/span> #endif 涔嬮棿鐨勮鍙ュ皢琚拷鐣ャ?/span>
C++ 涓簲璇ュ敖閲忛伩鍏嶄嬌鐢ㄥ畯錛?/span>
1 錛?/span> #define PI 3.1415926 鍙互浣跨敤 const double PI=3.1415926 浠f浛銆?/span>
2 錛?/span> #define MIN(a,b) (((a)<(b))?(a):(b)) 鍙互浣跨敤鍑芥暟妯℃澘浠f浛銆?/span>
template <class T>
inline T min(T a, T b)
{
聽聽聽聽聽聽 return (a<b)?a:b;
}
3. 鐢ㄤ簬鎷兼帴璧蜂袱涓覆鐨勫畯鍜屾潯浠剁紪璇戠殑瀹忎粛鐒舵湁鍏朵嬌鐢ㄨ寖鍥淬?/span>
瀹忕殑浼樼偣錛?/span>
1錛?span style="FONT: 7pt 'Times New Roman'">聽 鏁堢巼楂橈紝鎵ц閫熷害蹇備絾鏄湁鐨勫彲浠ヤ嬌鐢?/span> C++ 鐨?/span> inline 鍑芥暟浠f浛錛屼粛鐒朵繚鎸佸叾鎵ц鏁堢巼銆?/span>
瀹忕殑緙虹偣錛?/span>
1 錛庣己涔忕被鍨嬪畨鍏ㄦ鏌ュ拰浣滅敤鍩熻鍒欐鏌ワ紝緙栬瘧鍣ㄨ兘鐪嬪埌鐨勫彧鏄畯灞曞紑鍚庣殑褰㈠紡錛屾墍浠ュ湪瀹忎腑鐨勯敊璇槸鍦ㄥ畯琚睍寮涔嬪悗鎶ュ憡鐨勶紝鑰屼笉鏄湪瀹冨畾涔夋椂錛屽鑷撮潪甯擱毦浠ョ悊瑙g殑閿欒淇℃伅銆?/span>
2 錛庡畯鍚嶄笉鑳介噸杞斤紝鑰屼笖瀹忛澶勭悊鍣ㄤ笉鑳藉鐞嗛掑綊璋冪敤銆?/span>