锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲高清免费在线,欧美在线free,在线精品视频一区二区http://www.shnenglu.com/lf426/category/6366.htmlGame Design Using C++ and SDLzh-cnSat, 26 Jun 2010 21:39:42 GMTSat, 26 Jun 2010 21:39:42 GMT60褰誨簳瑙e瘑C++瀹藉瓧絎︼細6銆佸浗闄呭寲絳栫暐錛堝畬錛?/title><link>http://www.shnenglu.com/lf426/archive/2010/06/26/118788.html</link><dc:creator>lf426</dc:creator><author>lf426</author><pubDate>Sat, 26 Jun 2010 11:55:00 GMT</pubDate><guid>http://www.shnenglu.com/lf426/archive/2010/06/26/118788.html</guid><wfw:comment>http://www.shnenglu.com/lf426/comments/118788.html</wfw:comment><comments>http://www.shnenglu.com/lf426/archive/2010/06/26/118788.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/lf426/comments/commentRss/118788.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/lf426/services/trackbacks/118788.html</trackback:ping><description><![CDATA[<a title="<鏈枃pdf鏂囨。涓嬭澆>" href_cetemp="http://www.163pan.com/files/c0x000k09.html"><鏈枃PDF鏂囨。涓嬭澆></a><br><br>紜紪鐮佺殑紜激<br><br>鎴戜滑鐜板湪鐭ラ亾錛孋/C++鐨勫紿勮漿鎹㈡槸渚濊禆緋葷粺鐨刲ocale鐨勶紝騫朵笖鍦ㄨ繍琛屾椂瀹屾垚銆傝冭檻榪欐牱涓縐嶆儏鍐碉紝鎴戜滑鍦ㄧ畝浣撲腑鏂嘩indows涓嬬紪璇戝涓嬭鍙ワ細<br>const char* s = "涓枃abc";<br>鏍規(guī)嵁鎴戜滑涔嬪墠鐨勮璁猴紝緙栬瘧鍣ㄥ皢鎸夌収Windows Codepage936錛圙B2312錛夊榪欎釜瀛楃涓茶繘琛岀紪鐮併傚鏋滄垜浠湪紼嬪簭涓繍琛屽紿勮漿鎹㈠嚱鏁幫紝灝唖杞崲涓哄瀛楃涓瞱s錛屽鏋滆繖涓▼搴忚繍琛屽湪綆浣撲腑鏂囩幆澧冧笅鏄病闂鐨勶紝灝嗘墽琛屼粠GB2312鍒癠CS-2BE鐨勮漿鎹紱浣嗘槸錛屽鏋滃湪鍏朵粬璇█鐜涓嬶紝姣斿鏄箒浣撲腑鏂嘊IG5錛岀▼搴忓皢鏍規(guī)嵁緋葷粺鐨刲ocale鎵ц浠嶣IG5鍒癠CS-2BE鐨勮漿鎹紝榪欐樉鐒跺氨鍑虹幇浜嗛敊璇?br><br>琛ユ晳<br><br>鏈夋病鏈夎ˉ鏁戣繖涓棶棰樼殑鍔炴硶鍛紵涓涓В鍐蟲柟妗堝氨鏄墽琛屼笉渚濊禆locale鐨勫紿勮漿鎹€傚疄闄呬笂錛岃繖灝卞凡緇忎笉鏄紿勮漿鎹箣闂寸殑闂浜嗭紝鑰屾槸緙栫爜涔嬮棿杞崲鐨勯棶棰樹簡銆傛垜浠彲浠ョ敤GNU鐨刲ibiconv瀹炵幇浠繪剰緙栫爜闂寸殑杞崲錛屽浜庝互涓婄殑鍏蜂綋鎯呭喌錛屾寚鏄庢槸浠嶨B2312鍒癠CS-2BE灝變笉浼氬嚭閿欍傦紙璇峰弬鑰冩湰浜哄墠闈㈢殑绔犺妭錛?a title=win32涓嬬殑libiconv href="http://www.shnenglu.com/lf426/archive/2008/03/30/45738.html">win32涓嬬殑libiconv</a>錛夛紝浣嗚繖鏄劇劧鏄竴涓鎷欑殑絳栫暐錛氭垜浠湪綆浣撲腑鏂嘩indows涓嬪繀欏諱嬌鐢℅B2312鍒癠CS-2BE鐗堟湰鐨勫紿勮漿鎹㈠嚱鏁幫紱鍒頒簡BIG5鐜涓嬶紝灝卞繀欏婚噸鏂板啓浠嶣IG5鍒癠CS-2BE鐨勫紿勮漿鎹㈠嚱鏁般?br><br>Windows鐨勭瓥鐣?br><br>Windows鐨勭瓥鐣ユ槸娣樻卑浜嗙獎瀛楃涓詫紝騫茶剢鍙敤瀹藉瓧絎︿覆銆傛墍鏈夌殑紜紪鐮佸叏閮ㄥ姞涓婄壒瀹氬畯錛屾瘮濡俆EXT()錛屽鏋滅▼搴忔槸鎵璋揢nicode緙栬瘧錛屽湪緙栬瘧鏃跺氨緲昏瘧涓篣CS2-BE鈥斺擶indows鑷О涓篣nicode緙栫▼錛屽叾鏈川鏄嬌鐢ㄤ簡UCS-2BE鐨?6浣嶅瀛楃涓層?br><br>Linux鐨勭瓥鐣?br><br>Linux涓嬫牴鏈氨涓嶅瓨鍦ㄨ繖涓棶棰橈紒鍥犱負鍚勭璇█鐨凩inux閮戒嬌鐢║TF-8鐨勭紪鐮侊紝鎵浠ワ紝鏃犺緋葷粺locale濡備綍鍙樺寲錛岀獎鍒板杞崲鐨勮鍒欎竴鐩存槸UTF-8鍒癠TF32-BE 銆?br><br>璺ㄥ鉤鍙扮瓥鐣?br><br>鍥犱負鍦?6浣嶇殑鑼冨洿鍐咃紝UTF32-BE鐨勫墠16浣嶄負0錛屽悗16浣嶄笌UCS2-BE鏄竴鏍風殑錛屾墍浠ワ紝鍗充嬌wchar_t鐨剆izeof()涓嶄竴鏍鳳紝鍦ㄤ竴鑸儏鍐典笅錛岃法騫沖彴浣跨敤瀹藉瓧絎︼紙涓詫級涔熷簲璇ユ槸鍏煎鐨勩備絾鏄緷鐒跺瓨鍦ㄦ綔鍦ㄧ殑闂錛屽氨鏄偅浜?瀛楄妭鐨刄TF32緙栫爜銆?br><br>gettext絳栫暐<br><br>浠ヤ笂閮芥槸灝咥SCII鍙婁互澶栫殑緙栫爜紜紪鐮佸湪紼嬪簭涓殑鍔炴硶銆侴NU鐨刧ettext鎻愪緵浜嗗彟澶栦竴縐嶉夋嫨錛氬湪紼嬪簭涓彧紜紪鐮丄SCII錛屽璇█鏀寔鐢眊ettext鍑芥暟搴撳湪榪愯鏃跺姞杞姐傦紙瀵筭ettext鐨勪粙緇嶈鍙傝冩湰浜哄墠闈㈢殑绔犺妭錛?a title=Win32涓嬬殑GetText href="http://www.shnenglu.com/lf426/archive/2008/03/30/45723.html">Win32涓嬬殑GetText</a>錛夈俫ettext鐨勫璇█緲昏瘧鏂囦歡涓嶅湪紼嬪簭涓紝鑰屾槸鍗曠嫭鐨勬彁鍑烘潵鏀懼湪鐗瑰畾鐨勪綅緗俫ettext鏄庣‘鐨勭煡閬撹繖浜涚炕璇戞枃浠剁殑緙栫爜錛屾墍浠ュ彲浠ュ噯紜殑鍛婅瘔緇欑郴緇熺炕璇戠殑姝g‘淇℃伅錛岃岀郴緇熷皢榪欎簺淇℃伅浠ュ綋鍓嶇殑緋葷粺locale緙栫爜鎴愮獎瀛楃涓插弽棣堢粰紼嬪簭銆備緥濡傦紝鍦ㄧ畝浣撲腑鏂嘩indows涓紝gettext鐨刾o鏂囦歡涔熷彲浠ヤ互UTF-8鍌ㄥ瓨錛実ettext灝唒o鏂囦歡緲昏瘧鎴恗o鏂囦歡錛岀‘淇漨o鏂囦歡鍦ㄤ換浣曠郴緇熷拰璇█鐜涓嬮兘鑳藉姝g‘緲昏瘧銆傚湪榪愯鏄紶緇檞in32紼嬪簭鐨勭獎涓茬鍚堝綋鍓峫ocale錛屾槸GB2312銆俫ettext璁╁浗闄呭寲鐨勭炕璇戞洿鍔犵殑鏂逛究錛岀己鐐規(guī)槸鐩墠鎴戞病鎵懼埌鏀寔瀹藉瓧絎︿覆鐨勭増鏈紙鎹鏄湁ugettext()鏀寔瀹藉瓧絎︿覆錛夛紝鎵浠ヨ浣跨敤gettext鍙兘浣跨敤紿勫瓧絎︿覆銆備絾鏄痝ettext鍙互杞崲鍒板瀛楃涓詫紝鑰屼笖涓嶄細鍑虹幇瀹界獎杞崲鐨勯棶棰橈紝鍥犱負gettext鏄繍琛屾椂鏍規(guī)嵁locale緲昏瘧鐨勩備緥濡傦細<br>const char* s = gettext("Chinese a b c");<br>鍏朵腑"Chinese a b c"鍦╬o涓殑緲昏瘧鏄?涓枃abc"<br>浣跨敤渚濊禆locale鐨勮繍琛屾椂瀹界獎杞崲鍑芥暟錛?br>const std::wstring wstr = s2ws(s);<br>榪愯鏃惰皟鐢ㄨpo鏂囦歡瀵瑰簲鐨刴o鏂囦歡錛屽湪綆浣撲腑鏂囩幆澧冧笅灝變互GB2312浼犵粰紼嬪簭錛屽湪綣佷綋涓枃涓氨浠IG5浼犵粰紼嬪簭錛岃繖鏍穝2ws()鎬昏兘澶熸甯告崲綆楃紪鐮併?br><br>鏇村<br><br>鍦ㄦ湰鏂囩殑鏈鍚庯紝鎴戞兂鍥炲埌C++鐨剆tream闂涓娿傜敤fstream杞崲濡傛鐨勭畝鍗曪紝sstream鍗翠笉鏀寔銆傛敼閫犱竴涓敮鎸乧odecvt鐨剆tring stream闇瑕佹敼閫燽asic_stringbuf銆俠asic_stringbuf鍜宐asic_filebuf閮芥淳鐢熻嚜basic_streambuf錛屾墍涓嶅悓鐨勬槸basic_filebuf鍦ㄦ瀯閫犲拰open()鐨勬椂鍊欒皟鐢ㄤ簡codecvt錛屽彧闇瑕佸湪basic_stringbuf涓坊鍔犺繖涓姛鑳藉氨鍙互浜嗐傝璧鋒潵瀹規(guī)槗錛屽疄闄呬笂鏄渶瑕侀噸鏂版敼閫犱竴涓猄TL妯℃澘錛屽敖綆¤繖浜涙ā鏉挎簮浠g爜閮芥槸鍦ㄦ爣鍑嗗簱澶存枃浠朵腑鐜版垚鐨勶紝浣嗘槸鎴戣繕鏄按騫蟲湁闄愶紝娌℃湁鍘繪繁絀朵簡銆傚彟澶栦竴涓濊礬鏄瀯寤轟竴涓熀浜庡唴瀛樻槧灝勭殑铏氭嫙鏂囦歡錛岃繖涓鏋跺湪boost鐨刬ostreams搴撲腑錛屾湁鍏磋叮鐨勬湅鍙嬪彲浠ユ繁鍏ョ殑鐮旂┒銆?br>錛堝畬錛? <img src ="http://www.shnenglu.com/lf426/aggbug/118788.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/lf426/" target="_blank">lf426</a> 2010-06-26 19:55 <a href="http://www.shnenglu.com/lf426/archive/2010/06/26/118788.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>褰誨簳瑙e瘑C++瀹藉瓧絎︼細5銆佸埄鐢╢stream杞崲http://www.shnenglu.com/lf426/archive/2010/06/26/118779.htmllf426lf426Sat, 26 Jun 2010 08:40:00 GMThttp://www.shnenglu.com/lf426/archive/2010/06/26/118779.htmlhttp://www.shnenglu.com/lf426/comments/118779.htmlhttp://www.shnenglu.com/lf426/archive/2010/06/26/118779.html#Feedback0http://www.shnenglu.com/lf426/comments/commentRss/118779.htmlhttp://www.shnenglu.com/lf426/services/trackbacks/118779.html" href_cetemp="http://www.163pan.com/files/c0x000k09.html"><鏈枃PDF鏂囨。涓嬭澆>

C++鐨勬祦鍜屾湰鍦板寲絳栫暐闆?br>
BS鍦ㄨ璁++嫻佺殑鏃跺欏笇鏈涘叾鍏峰鏅鴻兘鍖栵紝騫朵笖鏄彲鎵╁睍鐨勬櫤鑳藉寲錛屼篃灝辨槸璇達紝C++鐨勬祦鍙互“璇繪噦”涓浜涘唴瀹廣傛瘮濡傦細
std::cout << 123 << "ok" << std::endl;
榪欏彞浠g爜涓紝std::cout鏄兘鍒ゆ柇鍑?23鏄痠nt鑰?ok"鏄痗onst char[3]銆傚埄鐢ㄦ祦鐨勬櫤鑳斤紝鐢氳嚦鍙互鍋氫竴浜涘熀紜綾誨瀷鐨勮漿鎹紝姣斿浠巌nt鍒皊tring錛宻tring鍒癷nt錛?br>
std::string str("123");
std::stringstream sstr(str);
int i;
sstr 
>> i;
int i = 123;
std::stringstream sstr;
sstr 
<< i;
std::
string str = sstr.str();
灝界濡傛錛孋++騫朵笉婊¤凍錛孋++鐢氳嚦甯屾湜嫻佽兘“鏄庣櫧”鏃墮棿錛岃揣甯佺殑琛ㄧず娉曘傝屾椂闂村拰璐у竵鐨勮〃紺烘柟娉曞湪涓栫晫鑼冨洿鍐呮槸涓嶅悓鐨勶紝鎵浠ワ紝姣忎竴涓祦閮芥湁鑷繁鐨刲ocale鍦ㄥ獎鍝嶅叾琛屼負錛孋++涓彨鍋氭縺媧伙紙imbue錛屼篃鏈夌炕璇戞垚嫻告煋錛夈傝屾垜浠煡閬擄紝姣忎竴涓猯ocale閮芥湁澶氫釜facet錛岃繖浜沠acet騫墮潪鎬繪槸琚玼se_facet浣跨敤鐨勩傚喅瀹氫嬌鐢ㄥ摢浜沠acet鐨勶紝鏄祦鐨勭紦瀛榖asic_streambuf鍙婂叾媧劇敓綾籦asic_stringbuf鍜宐asic_filebuf銆傛垜浠鐢ㄥ埌鐨刦acet鏄痗odecvt錛岃繖涓猣acet鍙basic_filebuf浣跨敤鈥斺旇繖灝辨槸涓轟粈涔堝彧鑳界敤fstream鏉ュ疄鐜板紿勮漿鎹紝鑰屾棤娉曚嬌鐢╯stream鏉ュ疄鐜扮殑鍘熷洜銆?br>澶存枃浠訛細
//filename string_wstring_fstream.hpp
#ifndef STRING_WSTRING_FSTREAM_HPP
#define STRING_WSTRING_FSTREAM_HPP

#include 
<string>

const std::wstring s2ws(const std::string& s);
const std::string ws2s(const std::wstring& s);

#endif
瀹炵幇錛?br>
#include <string>
#include 
<fstream>
#include 
"string_wstring_fstream.hpp"

const std::wstring s2ws(const std::string& s)
{
    std::locale sys_loc(
"");

    std::ofstream ofs(
"cvt_buf");
    ofs 
<< s;
    ofs.close();

    std::wifstream wifs(
"cvt_buf");
    wifs.imbue(sys_loc);
    std::wstring wstr;
    wifs 
>> wstr;
    wifs.close();

    
return wstr;
}

const std::string ws2s(const std::wstring& s)
{
    std::locale sys_loc(
"");

    std::wofstream wofs(
"cvt_buf");
    wofs.imbue(sys_loc);
    wofs 
<< s;
    wofs.close();

    std::ifstream ifs(
"cvt_buf");
    std::
string str;
    ifs 
>> str;
    ifs.close();

    
return str;
}
鍦ㄧ獎鍒板鐨勮漿鍖栦腑錛屾垜浠厛浣跨敤榛樿鐨勬湰鍦板寲絳栫暐闆嗭紙locale錛夊皢s閫氳繃紿勬枃浠舵祦ofs浼犲叆鏂囦歡錛岃繖鏄痗har鍒癱har鐨勪紶閫掞紝娌℃湁浠諱綍杞崲錛涚劧鍚庢垜浠墦寮瀹芥枃浠舵祦wifs錛屽茍鐢ㄧ郴緇熺殑鏈湴鍖栫瓥鐣ラ泦錛坙ocale錛夊幓嬋媧伙紙imbue錛変箣錛屾祦鍦ㄨ鍥炲涓瞱str鐨勬椂鍊欙紝灝辨槸char鍒皐char_t鐨勮漿鎹紝騫朵笖鍥犱負嬋媧諱簡sys_loc錛屾墍浠ュ疄鐜版爣鍑嗙獎鍒板鐨勮漿鎹€?br>鍦ㄥ鍒扮獎鐨勮漿鍖栦腑錛屾垜浠厛鎵撳紑鐨勬槸瀹芥枃浠舵祦wofs錛屽茍涓旂敤緋葷粺鐨勬湰鍦板寲絳栫暐闆唖ys_loc嬋媧伙紙imbue錛変箣錛岃繖鏃跺欙紝鍥犱負瑕佸啓鐨勬枃浠禼vt_buf鏄竴涓閮ㄧ紪鐮侊紝鎵浠ユ墽琛屼簡浠巜char_t鍒癱har鐨勬爣鍑嗚漿鎹€傝鍥炴潵鐨勬枃浠舵祦浠巆har鍒癱har錛屼笉鍋氫換浣曡漿鎹€?

lf426 2010-06-26 16:40 鍙戣〃璇勮
]]>
褰誨簳瑙e瘑C++瀹藉瓧絎︼細4銆佸埄鐢╟odecvt鍜寀se_facet杞崲http://www.shnenglu.com/lf426/archive/2010/06/26/118772.htmllf426lf426Sat, 26 Jun 2010 05:39:00 GMThttp://www.shnenglu.com/lf426/archive/2010/06/26/118772.htmlhttp://www.shnenglu.com/lf426/comments/118772.htmlhttp://www.shnenglu.com/lf426/archive/2010/06/26/118772.html#Feedback0http://www.shnenglu.com/lf426/comments/commentRss/118772.htmlhttp://www.shnenglu.com/lf426/services/trackbacks/118772.html" href_cetemp="http://www.163pan.com/files/c0x000k09.html"><鏈枃PDF鏂囨。涓嬭澆>

locale鍜宖acet

C++鐨刲ocale妗嗘灦姣擟鏇村畬澶囥侰++闄や簡涓涓緇熸湰鍦扮瓥鐣ラ泦locale錛岃繕鍙互涓簂ocale鎸囧畾鍏蜂綋鐨勭瓥鐣acet錛岀敋鑷沖彲浠ョ敤鑷繁瀹氫箟鐨刦acet鍘繪敼閫犱竴涓幇鏈夌殑locale浜х敓涓涓柊鐨刲ocale銆傚鏋滄湁涓涓猣acet綾籒ewFacet闇瑕佹坊鍔犲埌鏌愪釜old_loc涓艦鎴愭柊new_loc錛岄渶瑕佸彟澶栦竴涓瀯閫犲嚱鏁幫紝閫氬父鐨勫仛娉曟槸錛?br>std::locale new_loc(old_loc, new NewFacet);
鏍囧噯搴撻噷鐨勬爣鍑唂acet閮藉叿鏈夎嚜宸辯壒鏈夌殑鍔熻兘錛岃闂竴涓猯ocale瀵硅薄涓壒瀹氱殑facet闇瑕佷嬌鐢ㄦā鏉垮嚱鏁皍se_facet錛?br>template <class Facet> const Facet& use_factet(const locale&);
鎹竴縐嶈娉曪紝use_facet鎶婁竴涓猣acet綾誨疄渚嬪寲鎴愪簡瀵硅薄錛岀敱姝ゅ氨鍙互浣跨敤榪欎釜facet瀵硅薄鐨勬垚鍛樺嚱鏁般?br>
codecvt

codecvt灝辨槸涓涓爣鍑唂acet銆傚湪C++鐨勮璁℃鏋墮噷錛岃繖鏄竴涓氱敤鐨勪唬鐮佽漿鎹㈡ā鏉庫斺斾篃灝辨槸璇達紝騫朵笉鏄粎浠呬負瀹界獎杞崲鍒跺畾鐨勩?br>templat <class I, class E, class State> class std::codecvt: public locale, public codecvt_base{...};
I琛ㄧず鍐呴儴緙栫爜錛孍琛ㄧず澶栭儴緙栫爜錛孲tate鏄笉鍚岃漿鎹㈡柟寮忕殑鏍囪瘑錛屽鏋滃畾涔夊涓嬬被鍨嬶細
typedef std::codecvt<wchar_t, char, mbstate_t> CodecvtFacet;
閭d箞CodecvtFacet灝辨槸涓涓爣鍑嗙殑瀹界獎杞崲facet錛屽叾涓璵bstate_t鏄爣鍑嗗紿勮漿鎹㈢殑State銆?br>
鍐呴儴緙栫爜鍜屽閮ㄧ紪鐮?br>
鎴戜滑鑰冭檻絎?鑺備腑鎻愬埌鐨凜++緙栬瘧鍣ㄨ鍙栨簮鏂囦歡鏃跺欑殑鎯呭艦錛屽綋璇誨埌L"涓枃abc"鐨勬椂鍊欙紝澶栭儴緙栫爜錛屼篃灝辨槸婧愭枃浠剁殑緙栫爜錛屾槸GB2312鎴栬匲TF-8鐨刢har錛岃岀紪璇戝櫒蹇呴』灝嗗叾緲昏瘧涓篣CS-2BE鎴栬匲TF-32BE鐨剋char_t錛岃繖涔熷氨鏄▼搴忕殑鍐呴儴緙栫爜銆傚鏋滀笉鏄瀛楃涓詫紝鍐呭緙栫爜閮芥槸char錛屼篃灝變笉闇瑕佽漿鎹簡銆傜被浼肩殑錛屽綋C++璇誨啓鏂囦歡鐨勬椂鍊?錛屽氨浼氬彲鑳介渶瑕佸埌鍐呭緙栫爜杞崲銆備簨瀹炰笂錛宑odecvt灝辨鏄鏂囦歡嫻佺紦瀛榖asic_filebuf鎵浣跨敤鐨勩傜悊瑙h繖涓鐐瑰緢閲嶈錛屽師鍥犱細鍦ㄤ笅涓灝忚妭鐪嬪埌銆?br>
CodecvtFacet鐨刬n()鍜宱ut()
鍥犱負鍦–odecvtFacet涓紝鍐呴儴緙栫爜璁劇疆涓簑char_t錛屽閮ㄧ紪鐮佽緗負char錛岃漿鎹㈡ā寮忔槸鏍囧噯瀹界獎杞崲mbstate_t錛屾墍浠ワ紝綾繪柟娉昳n()灝辨槸浠巆har鏍囧噯杞崲鍒皐char_t錛宱ut()灝辨槸浠巜char_t鏍囧噯杞崲鍒癱har銆傝繖灝辨垚浜嗘垜浠闇瑕佺殑鍐呭杞崲鍑芥暟銆?br>result in(State& s, const E* from, const E* from_end, const E*& from_next, I* to,  I* to_end, I*& to_next) const;
result out(State& s, const I* from, const I* from_end, const I*& from_next, E* to, E* to_end, E*& to_next) const;
鍏朵腑錛宻鏄潪const寮曠敤錛屼繚瀛樼潃杞崲浣嶇Щ鐘舵佷俊鎭傝繖閲岄渶瑕侀噸鐐瑰己璋冪殑鏄紝鍥犱負杞崲鐨勫疄闄呭伐浣滀氦緇欎簡榪愯鏃跺簱錛屼篃灝辨槸璇達紝杞崲鍙兘涓嶆槸鍦ㄧ▼搴忕殑涓昏繘紼嬩腑瀹屾垚鐨勶紝鑰岃漿鎹㈠伐浣滀緷璧栦簬鏌ヨs鐨勫鹼紝鍥犳錛屽鏋渟鍦ㄨ漿鎹㈢粨鏉熷墠鏋愭瀯錛屽氨鍙兘鎶涘嚭榪愯鏃跺紓甯搞傛墍浠ワ紝鏈瀹夊叏鐨勫姙娉曟槸錛屽皢s璁劇疆涓哄叏灞鍙橀噺錛?br>const鐨?涓寚閽堝垎鍒槸寰呰漿鎹㈠瓧絎︿覆鐨勮搗鐐癸紝緇堢偣錛屽拰鍑虹幇閿欒鏃跺欑殑鍋滅偣錛堢殑涓嬩竴涓綅緗級錛涘彟澶?涓寚閽堟槸杞崲鐩爣瀛楃涓茬殑璧風偣錛岀粓鐐逛互鍙婂嚭鐜伴敊璇椂鍊欑殑鍋滅偣錛堢殑涓嬩竴涓綅緗級銆?br>
浠g爜濡備笅錛?br>澶存枃浠?br>
//Filename string_wstring_cppcvt.hpp

#ifndef STRING_WSTRING_CPPCVT_HPP
#define STRING_WSTRING_CPPCVT_HPP

#include 
<iostream>
#include 
<string>

const std::wstring s2ws(const std::string& s);
const std::string ws2s(const std::wstring& s);

#endif
瀹炵幇錛?br>
#include "string_wstring_cppcvt.hpp"

mbstate_t in_cvt_state;
mbstate_t out_cvt_state;

const std::wstring s2ws(const std::string& s)
{
    std::locale sys_loc(
"");

    
const char* src_str = s.c_str();
    
const size_t BUFFER_SIZE = s.size() + 1;

    wchar_t
* intern_buffer = new wchar_t[BUFFER_SIZE];
    wmemset(intern_buffer, 
0, BUFFER_SIZE);

    
const char* extern_from = src_str;
    
const char* extern_from_end = extern_from + s.size();
    
const char* extern_from_next = 0;
    wchar_t
* intern_to = intern_buffer;
    wchar_t
* intern_to_end = intern_to + BUFFER_SIZE;
    wchar_t
* intern_to_next = 0;

    typedef std::codecvt
<wchar_t, char, mbstate_t> CodecvtFacet;

    CodecvtFacet::result cvt_rst 
=
        std::use_facet
<CodecvtFacet>(sys_loc).in(
            in_cvt_state,
            extern_from, extern_from_end, extern_from_next,
            intern_to, intern_to_end, intern_to_next);
    
if (cvt_rst != CodecvtFacet::ok) {
        
switch(cvt_rst) {
            
case CodecvtFacet::partial:
                std::cerr 
<< "partial";
                
break;
            
case CodecvtFacet::error:
                std::cerr 
<< "error";
                
break;
            
case CodecvtFacet::noconv:
                std::cerr 
<< "noconv";
                
break;
            
default:
                std::cerr 
<< "unknown";
        }
        std::cerr    
<< ", please check in_cvt_state."
                    
<< std::endl;
    }
    std::wstring result 
= intern_buffer;

    delete []intern_buffer;

    
return result;
}

const std::string ws2s(const std::wstring& ws)
{
    std::locale sys_loc(
"");

    
const wchar_t* src_wstr = ws.c_str();
    
const size_t MAX_UNICODE_BYTES = 4;
    
const size_t BUFFER_SIZE =
                ws.size() 
* MAX_UNICODE_BYTES + 1;

    
char* extern_buffer = new char[BUFFER_SIZE];
    memset(extern_buffer, 
0, BUFFER_SIZE);

    
const wchar_t* intern_from = src_wstr;
    
const wchar_t* intern_from_end = intern_from + ws.size();
    
const wchar_t* intern_from_next = 0;
    
char* extern_to = extern_buffer;
    
char* extern_to_end = extern_to + BUFFER_SIZE;
    
char* extern_to_next = 0;

    typedef std::codecvt
<wchar_t, char, mbstate_t> CodecvtFacet;

    CodecvtFacet::result cvt_rst 
=
        std::use_facet
<CodecvtFacet>(sys_loc).out(
            out_cvt_state,
            intern_from, intern_from_end, intern_from_next,
            extern_to, extern_to_end, extern_to_next);
    
if (cvt_rst != CodecvtFacet::ok) {
        
switch(cvt_rst) {
            
case CodecvtFacet::partial:
                std::cerr 
<< "partial";
                
break;
            
case CodecvtFacet::error:
                std::cerr 
<< "error";
                
break;
            
case CodecvtFacet::noconv:
                std::cerr 
<< "noconv";
                
break;
            
default:
                std::cerr 
<< "unknown";
        }
        std::cerr    
<< ", please check out_cvt_state."
                    
<< std::endl;
    }
    std::
string result = extern_buffer;

    delete []extern_buffer;

    
return result;
}
鏈鍚庤ˉ鍏呰鏄庝竴涓媠td::use_facet<CodecvtFacet>(sys_loc).in()鍜宻td::use_facet<CodecvtFacet>(sys_loc).out()銆俿ys_loc鏄郴緇熺殑locale錛岃繖涓猯ocale涓氨鍖呭惈鐫鐗瑰畾鐨刢odecvt facet錛屾垜浠凡緇弔ypedef涓轟簡CodecvtFacet銆傜敤use_facet瀵笴odecvtFacet榪涜浜嗗疄渚嬪寲錛屾墍浠ュ彲浠ヤ嬌鐢ㄨ繖涓猣acet鐨勬柟娉昳n()鍜宱ut()銆?

lf426 2010-06-26 13:39 鍙戣〃璇勮
]]>
褰誨簳瑙e瘑C++瀹藉瓧絎︼細3銆佸埄鐢–榪愯鏃跺簱鍑芥暟杞崲http://www.shnenglu.com/lf426/archive/2010/06/26/118762.htmllf426lf426Sat, 26 Jun 2010 03:17:00 GMThttp://www.shnenglu.com/lf426/archive/2010/06/26/118762.htmlhttp://www.shnenglu.com/lf426/comments/118762.htmlhttp://www.shnenglu.com/lf426/archive/2010/06/26/118762.html#Feedback1http://www.shnenglu.com/lf426/comments/commentRss/118762.htmlhttp://www.shnenglu.com/lf426/services/trackbacks/118762.html" href_cetemp="http://www.163pan.com/files/c0x000k09.html"><鏈枃PDF鏂囨。涓嬭澆>

std::locale

閫氳繃鍓嶉潰涓よ妭鐨勭煡璇嗭紝鎴戜滑鐭ラ亾浜嗗湪C/C++涓紝瀛楃錛堜覆錛夊拰瀹藉瓧絎︼紙涓詫級涔嬮棿鐨勮漿鎹笉鏄畝鍗曠殑錛屽浐瀹氱殑鏁板鍏崇郴錛屽紿勮漿鎹緷璧栦簬鏈湴鍖栫瓥鐣ラ泦錛坙ocale錛夈傛崲鍙ヨ瘽璇達紝涓涓▼搴忓湪榪愯涔嬪墠騫朵笉鐭ラ亾緋葷粺鐨勬湰鍦板寲絳栫暐闆嗘槸浠涔堬紝紼嬪簭鍙湁鍦ㄨ繍琛屼箣鍚庢墠閫氳繃locale鑾峰緱褰撴椂鐨勬湰鍦板寲絳栫暐闆嗐?br>C鏈夎嚜宸辯殑locale鍑芥暟錛屾垜浠繖閲岀洿鎺ヤ粙緇岰++鐨刲ocale綾匯?br>鍏堣璁簂ocale鐨勬瀯閫犲嚱鏁幫細
locale() throw();
榪欎釜鏋勯犲嚱鏁版槸鑾峰緱褰撳墠紼嬪簭鐨刲ocale錛岀敤娉曞涓嬶細
std::locale app_loc = std::locale();
鎴栬咃紙榪欐槸鏋勯犲璞$殑涓ょ琛ㄧず鏂瑰紡錛屽悗鍚岋級
std::locale app_loc;
鍙﹀涓涓瀯閫犲嚱鏁版槸錛?br>explicit locale(const char* name);
榪欎釜鏋勯犲嚱鏁頒互name鐨勫悕瀛楀垱寤烘柊鐨刲ocale銆傞噸瑕佺殑locale瀵硅薄鏈夛細
std::locale sys_loc("");      //鑾峰緱褰撳墠緋葷粺鐜鐨刲ocale
std::locale C_loc("C");      鎴栬?nbsp;     std::locale C_loc = std::locale::classic();      //鑾峰緱C瀹氫箟locale
std::locale old_loc = std::locale::global(new_loc);      //灝唍ew_loc璁劇疆涓哄綋鍓嶅叏灞locale錛屽茍灝嗗師鏉ョ殑locale榪斿洖緇檕ld_loc
闄や簡榪欎簺錛屽叾瀹冪殑name鍏蜂綋鍚嶅瓧渚濊禆浜嶤++緙栬瘧鍣ㄥ拰鎿嶄綔緋葷粺錛屾瘮濡侺inux涓媑cc涓枃緋葷粺鐨刲ocale鍚嶅瓧涓?zh_CN.UTF-8"錛屼腑鏂嘩indows鍙互鐢?chs"錛堟洿鍔犲畬鏁寸殑鍚嶅瓧鍙互鐢╪ame()鍑芥暟鏌ョ湅錛夈?br>
mbstowcs()鍜寃cstombs()

榪欎袱涓狢榪愯鏃跺簱鍑芥暟渚濊禆浜庡叏灞locale榪涜杞崲錛屾墍浠ワ紝浣跨敤鍓嶅繀欏誨厛璁劇疆鍏ㄥ眬locale銆?br>std::locale宸茬粡鍖呭惈鍦?lt;iostream>涓簡錛屽啀鍔犱笂鎴戜滑闇瑕佺敤鍒扮殑C++瀛楃涓詫紝鎵浠ュ寘鍚?lt;string>銆?br>鎴戜滑鍏堢湅紿勫埌瀹界殑杞崲鍑芥暟錛?br>
const std::wstring s2ws(const std::string& s)
{
    std::locale old_loc 
=
        std::locale::global(std::locale(
""));

    
const char* src_str = s.c_str();
    
const size_t buffer_size = s.size() + 1;
    wchar_t
* dst_wstr = new wchar_t[buffer_size];
    wmemset(dst_wstr, 
0, buffer_size);
    mbstowcs(dst_wstr, src_str, buffer_size);
    std::wstring result 
= dst_wstr;
    delete []dst_wstr;

    std::locale::global(old_loc);

    
return result;
}
鎴戜滑灝嗗叏灞locale璁劇疆涓虹郴緇焞ocale錛屽茍淇濆瓨鍘熸潵鐨勫叏灞locale鍦╫ld_loc涓?br>鍦ㄥ埗瀹氳漿鎹㈢┖闂寸紦瀛樺ぇ灝忕殑鏃跺欙紝鑰冭檻濡備笅錛歝har鏄敤1涓垨澶氫釜瀵硅薄錛屼篃灝辨槸1涓垨鑰呭涓瓧鑺傛潵琛ㄧず鍚勭絎﹀彿錛氭瘮濡傦紝GB2312鐢?涓瓧鑺傝〃紺烘暟瀛楀拰瀛楁瘝錛?涓瓧鑺傝〃紺烘眽瀛楋紱UTF-8鐢ㄤ竴涓瓧鑺傝〃紺烘暟瀛楀拰瀛楁瘝錛?涓瓧鑺傝〃紺烘眽瀛楋紝4涓瓧鑺傝〃紺轟竴浜涘緢灝戠敤鍒扮殑絎﹀彿錛屾瘮濡傞煶涔愪腑G澶ц皟絎﹀彿絳夈倃char_t鏄敤1涓璞★紙2瀛楄妭鎴栬?瀛楄妭錛夋潵琛ㄧず鍚勭絎﹀彿銆傚洜姝わ紝琛ㄧず鍚屾牱鐨勫瓧絎︿覆錛屽瀛楃涓茬殑澶у皬錛堜篃灝辨槸wchar_t瀵硅薄鐨勬暟閲忥級鎬繪槸灝忎簬鎴栬呯瓑浜庣獎瀛楃涓插ぇ灝忥紙char瀵硅薄鏁伴噺錛夌殑銆?1鏄負浜嗗湪鏈鍚庨鐣欎竴涓間負0鐨勫璞★紝浠ヤ究璁〤椋庢牸鐨刢har鎴栬厀char_t瀛楃涓茶嚜鍔ㄦ埅鏂斺旇繖褰撶劧鏄涓插ぇ灝忕瓑浜庣獎涓插ぇ灝忕殑鏃跺欐墠浼氱敤涓婄殑錛屽ぇ閮ㄥ垎鏃跺欙紝瀛楃涓叉棭鍦ㄥ墠闈㈡煇涓漿鎹㈠畬姣曠殑浣嶇疆灝辮0鍊煎璞℃墍鎴柇浜嗐?br>鏈鍚庢垜浠皢鍏ㄥ眬locale璁劇疆鍥炲師鏉ョ殑old_loc銆?br>紿勪覆鍒板涓茬殑杞崲鍑芥暟錛?br>
const std::string ws2s(const std::wstring& ws)
{
    std::locale old_loc 
=
        std::locale::global(std::locale(
""));

    
const wchar_t* src_wstr = ws.c_str();
    size_t buffer_size 
= ws.size() * 4 + 1;
    
char* dst_str = new char[buffer_size];
    memset(dst_str, 
0, buffer_size);
    wcstombs(dst_str ,src_wstr, buffer_size);
    std::
string result = dst_str;
    delete []dst_str;

    std::locale::global(old_loc);

    
return result;
}
榪欓噷鑰冭檻杞崲絀洪棿緙撳瓨澶у皬鐨勭瓥鐣ユ濂界浉鍙嶏紝鍦ㄦ渶鏋佺鐨勬儏鍐典笅錛屾墍鏈夌殑wchar_t閮介渶瑕?涓猚har鏉ヨ〃紺猴紝鎵浠ユ渶澶х殑鍙兘灝辨槸4鍊嶅姞1銆?br>榪欎袱涓嚱鏁板湪VC鍜実cc涓兘鑳芥甯歌繍琛岋紙MinGW鍥犱負鍓嶉潰璇村埌鐨勫師鍥犱笉鏀寔瀹藉瓧絎︾殑姝e父浣跨敤錛夛紝鍦╒C涓細緇欏嚭涓嶅畨鍏ㄧ殑璀﹀憡錛岃繖鏄憡璇夌粰閭d簺寮勪笉娓呭紿勮漿鎹㈠疄璐ㄧ殑浜虹殑璀﹀憡錛屽浜庝簡瑙e埌鐩墠榪欎簺鐭ヨ瘑鐨勪綘鎴戞潵璇達紝榪欏氨鏄暟鍡︿簡銆?

lf426 2010-06-26 11:17 鍙戣〃璇勮
]]>
褰誨簳瑙e瘑C++瀹藉瓧絎︼細2銆乁nicode鍜孶TFhttp://www.shnenglu.com/lf426/archive/2010/06/25/118739.htmllf426lf426Fri, 25 Jun 2010 13:51:00 GMThttp://www.shnenglu.com/lf426/archive/2010/06/25/118739.htmlhttp://www.shnenglu.com/lf426/comments/118739.htmlhttp://www.shnenglu.com/lf426/archive/2010/06/25/118739.html#Feedback0http://www.shnenglu.com/lf426/comments/commentRss/118739.htmlhttp://www.shnenglu.com/lf426/services/trackbacks/118739.html" href_cetemp="http://www.163pan.com/files/c0x000k09.html"><鏈枃PDF鏂囨。涓嬭澆>

Unicode鍜孶CS

Unicode鍜孶CS鏄袱涓嫭绔嬬殑緇勭粐鍒嗗埆鍒跺畾鐨勪竴濂楃紪鐮佹爣鍑嗭紝浣嗘槸鍥犱負鍘嗗彶鐨勫師鍥狅紝榪欎袱濂楁爣鍑嗘槸瀹屽叏涓鏍風殑銆俇nicode榪欎釜璇嶇敤寰楁瘮杈冨鐨勫師鍥犲彲鑳芥槸鍥犱負姣旇緝瀹規(guī)槗璁頒綇錛屽鏋滄病鏈夌壒鍒殑澹版槑錛屽湪鏈枃鎵鎻愬強鐨刄nicode鍜孶CS灝辨槸涓涓剰鎬濄俇nicode鐨勭洰鏍囨槸寤虹珛涓濂楀彲浠ュ寘鍚漢綾繪墍鏈夎璦鏂囧瓧絎﹀彿浣犳兂寰楀埌鎯充笉鍒扮殑鍚勭涓滆タ鐨勭紪鐮侊紝鍏剁紪鐮佸閲忕敋鑷抽鐣欎簡鐏槦璇互鍙婇摱娌崇郴浠ュ璇█鐨勭┖闂粹斺斿紑涓帺絎戯紝鍙嶆綆鍗曠殑璇達紝Unicode緙栫爜闆嗚凍澶熺殑澶э紝濡傛灉鐢ㄨ綆楁満鍗曚綅鏉ヨ〃紺猴紝鍏舵暟閲忔瘮3涓瓧鑺傚ぇ涓浜涳紝涓嶅埌4涓瓧鑺傘?br>
Unicode鍜孶TF

鍥犱負Unicode鍖呭惈鐨勫唴瀹瑰お澶氾紝鍏剁紪鐮佸湪璁$畻鏈轟腑鐨勮〃紺烘柟娉曞氨鎴愪負浜嗕竴涓湁蹇呰鐮旂┒鐨勯棶棰樸備紶緇熺紪鐮侊紝姣斿鏍囧噯鐨?浣岮SCII錛屽湪璁$畻鏈轟腑鐨勮〃紺烘柟娉曞氨鏄崰涓涓瓧鑺傜殑鍚?浣嶏紝榪欎技涔庢槸涓嶉渶瑕佽В閲婂氨絎﹀悎澶у涔犳儻鐨勮〃紺烘柟娉曘備絾鏄綋浠奤nicode鐨勬繪暟杈懼埌32浣嶏紙璁$畻鏈虹殑鏈灝忓崟浣嶆槸瀛楄妭錛屾墍浠ュぇ浜?瀛楄妭錛屽氨鍙兘鑷沖皯鐢?瀛楄妭琛ㄧず錛夛紝瀵逛簬澶ч儴鍒嗗父鐢ㄥ瓧絎︼紝姣斿Unicode緙栫爜鍙崰涓涓瓧鑺傚ぇ灝忕殑鑻辮瀛楁瘝錛屽崰涓や釜瀛楄妭澶у皬姹夊瓧錛岄兘鐢?涓瓧鑺傛潵鍌ㄥ瓨澶ア渚堜簡銆傚彟澶栵紝濡傛灉閮界敤4瀛楄妭鐩存帴琛ㄧず錛屽氨涓嶅彲閬垮厤鐨勫嚭鐜頒負0鐨勫瓧鑺傘傝屾垜浠煡閬擄紝鍦–璇█涓紝0x00鐨勫瓧鑺傚氨鏄?\0'錛岃〃紺虹殑鏄竴涓瓧絎︿覆錛坈har瀛楃涓詫紝闈瀢char_t錛夌殑緇撴潫錛屾崲鍙ヨ瘽璇達紝C椋庢牸鐨刢har瀛楃涓叉棤娉曡〃紺篣nicode銆?br>鍥犱負綾諱技鐨勭縐嶉棶棰橈紝涓篣nicode鍦ㄨ綆楁満涓殑緙栫爜鏂規(guī)硶鍑虹幇浜嗭紝榪欏氨鏄疷TF錛涙墍瀵瑰簲鐨勶紝涓篣CS緙栫爜瀹炵幇鐨勬柟寮忎篃鏈夎嚜宸辯殑璇存硶銆備竴鑸潵璇達紝UTF-x錛寈琛ㄧず榪欏緙栫爜涓涓崟浣嶈嚦灝戝崰鐢▁浣嶏紝鍥犱負Unicode鏈闀胯揪鍒?2浣嶏紝鎵浠TF-x閫氬父鏄彉闀跨殑鈥斺旈櫎浜哢TF-32錛涜孶CS-y琛ㄧず涓涓崟浣嶅氨鍗犵敤y涓瓧鑺傦紝鎵浠ヨ兘琛ㄧず褰撲粖Unicode鐨刄CS-y鍙湁UCS-4錛屼絾鏄洜涓哄巻鍙茬殑鍘熷洜錛屽綋Unicode榪樻病閭d箞搴炲ぇ鐨勬椂鍊欙紝2涓瓧鑺傝凍澶熻〃紺猴紝鎵浠ユ湁UCS-2錛岀幇鍦ㄧ湅鏉ワ紝UCS-2鎵鑳借〃紺虹殑Unicode鍙槸褰撲粖Unicode鐨勪竴涓瓙闆嗐?br>涔熷氨鏄錛屽鏋滄煇縐嶇紪鐮侊紝鑳芥牴鎹竴瀹氱殑瑙勫垯綆楁硶錛屽緱鍒癠nicode緙栫爜錛岄偅涔堣繖縐嶇紪鐮佹柟寮忓氨鍙互縐頒箣涓篣TF銆?br>
UTF-8鍜學indows GB2312

UTF-8鏄竴濂?#8220;鑱槑”鐨勭紪鐮侊紝鍙兘鐢?錛?錛?錛?涓瓧鑺傝〃紺恒傞氳繃UTF-8鐨勭畻娉曪紝姣忎竴涓瓧鑺傝〃紺虹殑淇℃伅閮藉緢鏄庣‘錛氳繖鏄笉鏄煇涓猆nicode緙栫爜鐨勭涓涓瓧鑺傦紱濡傛灉鏄涓涓瓧鑺傦紝榪欐槸涓涓嚑浣峌nicode緙栫爜銆傝繖縐?#8220;鑱槑”琚О涓篣TF-8鐨勮嚜鎴戝悓姝ワ紝涔熸槸UTF-8鎴愪負緗戠粶浼犺緭鏍囧噯緙栫爜鐨勫師鍥犮?br>鍙﹀錛孶TF-8涔熶笉浼氬嚭鐜?瀛楄妭錛屾墍浠ュ彲浠ヨ〃紺轟負char瀛楃涓詫紝鎵浠ュ彲浠ユ垚涓虹郴緇熺殑緙栫爜銆侺inux緋葷粺榛樿浣跨敤UTF-8緙栫爜銆?br>Windows GB2312涓鑸嚜縐頒負GB2312錛屽叾瀹炵湡姝g殑鍚嶅瓧搴旇鏄疻indows Codepage 936錛岃繖涔熸槸涓縐嶅彉闀跨殑緙栫爜錛?涓瓧鑺傝〃紺轟紶緇熺殑ASCII閮ㄥ垎錛涙眽瀛楅儴鍒嗘槸涓や釜瀛楄妭鐨凣BK錛堝浗鏍囨墿錛堝睍錛夛紝鎷奸煶澹版瘝錛夈侰odepage 936涔熷彲浠ヨ〃紺轟負char瀛楃涓詫紝鏄腑鏂嘩indows緋葷粺鐨勯粯璁ょ紪鐮併?br>鎴戜滑鍦ㄧ1鑺備腑鐪嬪埌鐨?br>const char* s = "涓枃abc";
鍦╓indows涓殑緙栫爜灝辨槸Codepage 936錛涘湪Linux涓殑緙栫爜灝辨槸UTF-8銆?br>闇瑕佹敞鎰忕殑鏄紝Codepage 936涓嶅儚UTF錛岃窡Unicode娌℃湁鎹㈢畻鐨勫叧緋伙紝鎵浠ュ彧鑳介氳繃“浠g爜欏?#8221;鎶鏈煡琛ㄥ搴斻?br>
UTF-16鍜孶CS-2

UTF-16鐢?涓瓧鑺傛垨鑰?涓瓧鑺傝〃紺恒傚湪2涓瓧鑺傚ぇ灝忕殑鏃跺欙紝璺烾CS-2鏄竴鏍風殑銆俇TF-16涓嶅儚UTF-8錛屾病鏈夎嚜鎴戝悓姝ユ満鍒訛紝鎵浠ワ紝緙栫爜澶т綅鍦ㄥ墠榪樻槸灝忎綅鍦ㄥ墠錛屽氨鎴愪簡瑙佷粊瑙佹櫤鐨勯棶棰樸傛垜浠湪絎?鑺備腑錛?#8220;涓?#8221;鐨刄CS-2BE錛堝洜涓烘槸涓や釜瀛楄妭錛屾墍浠ヤ篃灝辨槸UTF-16BE錛夌紪鐮佹槸0x4E2D錛岃繖閲岀殑BE灝辨槸澶т綅鍦ㄥ悗鐨勬剰鎬濓紙涔熷氨鏄皬浣嶅湪鍓嶄簡錛夛紝瀵瑰簲鐨勶紝濡傛灉鏄疷CS-2LE錛岀紪鐮佸氨鎴愪簡0x2D4E銆?br>Windows涓殑wchar_t灝辨槸閲囩敤UCS-2BE緙栫爜銆傞渶瑕佹寚鍑虹殑鏄紝C++鏍囧噯涓wchar_t鐨勮姹傛槸瑕佽兘琛ㄧず鎵鏈夌郴緇熻兘璇嗗埆鐨勫瓧絎︺俉indows鑷О鏀寔Unicode錛屼絾鏄叾wchar_t鍗翠笉鑳借〃紺烘墍鏈夌殑Unicode錛岀敱姝よ繚鑳屼簡C++鏍囧噯銆?br>
UTF-32鍜孶CS-4

UTF-32鍦ㄧ洰鍓嶉樁孌電瓑浠蜂簬UCS-4錛岄兘鐢ㄥ畾闀跨殑4涓瓧鑺傝〃紺恒俇TF-32鍚屾牱瀛樺湪BE鍜孡E鐨勯棶棰樸侺inux鐨剋char_t緙栫爜灝辨槸UTF-32BE銆傚湪16浣嶄互鍐呯殑鏃跺欙紝UTF-32BE鐨勫悗涓や綅錛堝墠涓や綅鏄?x00 0x00錛夌瓑浠蜂簬UTF-16BE涔熷氨絳変環(huán)浜嶶CS-2BE

BOM

涓轟簡璇存槑涓涓枃浠墮噰鐢ㄧ殑鏄粈涔堢紪鐮侊紝鍦ㄦ枃浠舵渶寮濮嬬殑閮ㄥ垎錛屽彲浠ユ湁BOM錛屾瘮濡?xFE 0xFF琛ㄧずUTF-16BE錛?xFF 0xFE 0x00 0x00琛ㄧずUTF-32LE銆俇TF-8鍘熸湰鏄笉闇瑕丅OM鐨勶紝鍥犱負鍏惰嚜鎴戝悓姝ョ殑鐗規(guī)э紝浣嗘槸涓轟簡鏄庣‘璇存槑榪欐槸UTF-8錛堣屼笉鏄鏂囨湰緙栬緫鍣ㄥ幓鐚滐級錛屼篃鍙互鍔犱笂UTF-8鐨凚OM錛?xEF 0xBB 0xBF

浠ヤ笂鍐呭閮借榪板緱寰堟鐣ワ紝璇︾粏淇℃伅璇鋒煡闃呯淮鍩虹櫨縐戠浉鍏沖唴瀹廣?

lf426 2010-06-25 21:51 鍙戣〃璇勮
]]>
褰誨簳瑙e瘑C++瀹藉瓧絎︼細1銆佷粠char鍒皐char_thttp://www.shnenglu.com/lf426/archive/2010/06/25/118707.htmllf426lf426Fri, 25 Jun 2010 06:41:00 GMThttp://www.shnenglu.com/lf426/archive/2010/06/25/118707.htmlhttp://www.shnenglu.com/lf426/comments/118707.htmlhttp://www.shnenglu.com/lf426/archive/2010/06/25/118707.html#Feedback1http://www.shnenglu.com/lf426/comments/commentRss/118707.htmlhttp://www.shnenglu.com/lf426/services/trackbacks/118707.html" href_cetemp="http://www.163pan.com/files/c0x000k09.html"><鏈枃PDF鏂囨。涓嬭澆>

“榪欎釜闂姣斾綘鎯寵薄涓鏉?#8221;
錛堟垜涔熷涓婤S鐨勯鏍鹼紝铏界劧榪欏彞璇濇槸鎴戣嚜宸變復鏃舵兂璇寸殑銆俕^錛?br>
浠庡瓧絎﹀埌鏁存暟

char鏄竴縐嶆暣鏁扮被鍨嬶紝榪欏彞璇濈殑鍚箟鏄紝char鎵鑳借〃紺虹殑瀛楃鍦–/C++涓兘鏄暣鏁扮被鍨嬨傚ソ錛屾帴涓嬫潵錛屽緢澶氭枃绔犲氨浼氫婦鍑轟竴涓吀鍨嬩緥瀛愶紝姣斿錛?a'鐨勬暟鍊煎氨鏄?x61銆傝繖縐嶈娉曞鍚楋紵濡傛灉浣犵粏蹇冪殑璇昏繃K&R鍜孊S瀵逛簬C鍜孋++鎻忚堪鐨勫師钁楋紝浣犲氨浼氶┈涓婂弽椹抽亾錛?x61鍙槸'a'鐨凙SCII鍊鹼紝騫舵病鏈変換浣曡瀹欳/C++鐨刢har鍊煎繀欏誨搴擜SCII銆侰/C++鐢氳嚦娌℃湁瑙勫畾char鍗犲嚑浣嶏紝鍙槸瑙勫畾浜唖izeof(char)絳変簬1銆?br>褰撶劧錛岀洰鍓嶅ぇ閮ㄥ垎鎯呭喌涓嬶紝char鏄?浣嶇殑錛屽茍涓旓紝鍦ˋSCII鑼冨洿鍐呯殑鍊鹼紝涓嶢SCII瀵瑰簲銆?br>
鏈湴鍖栫瓥鐣ラ泦錛坙ocale錛?br>
“灝?a'緲昏瘧鎴?x61鐨勬暣鏁板?#8221;錛?#8220;灝咥SCII鑼冨洿鍐呯殑緙栫爜涓巆har鐨勬暣鏁板煎搴旇搗鏉?#8221;錛岀被浼艱繖鏍風殑瑙勫畾錛屾槸鐗瑰畾緋葷粺鍜岀壒瀹氱紪璇戝櫒鍒跺畾鐨勶紝C/C++涓湁涓壒瀹氱殑鍚嶈瘝鏉ユ弿榪拌繖縐嶈瀹氱殑闆嗗悎錛氭湰鍦板寲絳栫暐闆嗭紙locale銆備篃鏈夌炕璇戞垚“鐜板満”錛夈傝岀炕璇戔斺斾篃灝辨槸浠g爜杞崲錛坈odecvt錛夊彧鏄繖涓泦鍚堜腑鐨勪竴涓紝C++涓畾涔変負絳栫暐錛坒acet銆備篃鏈夌炕璇戜負“鍒婚潰”錛?br>
C/C++鐨勭紪璇戠瓥鐣?br>
“鏈湴鍖栫瓥鐣ラ泦”鏄釜寰堝ソ鐨勬蹇碉紝鍙儨鍦ㄥ瓧絎﹀拰瀛楃涓茶繖涓眰闈笂錛孋/C++騫朵笉浣跨敤錛圕++鐨刲ocale閫氬父鍙槸褰卞搷嫻侊紙stream錛夛級錛孋/C++浣跨敤鏇寸洿鎺ョ畝鍗曠殑絳栫暐錛氱‖緙栫爜銆?br>綆鍗曠殑璇達紝瀛楃錛堜覆錛夊湪紼嬪簭鏂囦歡錛堝彲鎵ц鏂囦歡錛岄潪婧愭枃浠訛級涓殑琛ㄧず錛屼笌鍦ㄧ▼搴忔墽琛屼腑鍦ㄥ唴瀛樹腑鐨勮〃紺轟竴鑷淬傝冭檻涓ょ鎯呭喌錛?br>A銆乧har c = 0x61;
B銆乧har c = 'a';
鎯呭喌A涓嬶紝緙栬瘧鍣ㄥ彲浠ョ洿鎺ヨ璇嗕綔涓烘暣鏁扮殑c錛屼絾鏄湪鎯呭喌B涓嬶紝緙栬瘧鍣ㄥ繀欏誨皢'a'緲昏瘧鎴愭暣鏁般傜紪璇戝櫒鐨勭瓥鐣ヤ篃寰堢畝鍗曪紝灝辨槸鐩存帴璇誨彇瀛楃錛堜覆錛夊湪婧愭枃浠朵腑鐨勭紪鐮佹暟鍊箋傛瘮濡傦細
const char* s = "涓枃abc";
榪欐瀛楃涓插湪GB2312錛圵indows 936錛夛紝涔熷氨鏄垜浠殑windows榛樿涓枃緋葷粺婧愭枃浠朵腑鐨勭紪鐮佷負錛?br>0xD6   0xD0   0xCE 0xC4 0x61 0x62 0x63
鍦║TF-8錛屼篃灝辨槸Linux榛樿緋葷粺婧愭枃浠朵腑鐨勭紪鐮佷負錛?br>0xE4   0xB8   0xAD   0xE6   0x96   0x87   0x61   0x62   0x63
涓鑸儏鍐典笅錛岀紪璇戝櫒浼氬繝瀹炰簬婧愭枃浠剁殑緙栫爜涓簊璧嬪鹼紝渚嬪鐨勬儏鍐墊瘮濡俈C浼氳嚜浣滆仾鏄庣殑鎶婂ぇ閮ㄥ垎鍏朵粬綾誨瀷緙栫爜鐨勫瓧絎︿覆杞崲鎴怗B2312錛堥櫎浜嗗儚UTF-8 without signature榪欐牱鐨勫垢瀛樿咃級銆?br>紼嬪簭鍦ㄦ墽琛岀殑鏃跺欙紝s涔熷氨淇濇寔鏄繖鏍風殑緙栫爜錛屼笉浼氬啀鍋氬叾浠栫殑杞崲銆?br>
瀹藉瓧絎?wchar_t
姝echar娌℃湁瑙勫畾澶у皬錛寃char_t鍚屾牱娌℃湁鏍囧噯闄愬畾錛屾爣鍑嗗彧鏄姹備竴涓獁char_t鍙互琛ㄧず浠諱綍緋葷粺鎵鑳借璇嗙殑瀛楃錛屽湪win32涓紝wchar_t涓?6浣嶏紱Linux涓槸32浣嶃倃char_t鍚屾牱娌℃湁瑙勫畾緙栫爜錛屽洜涓篣nicode鐨勬蹇墊垜浠悗闈㈡墠瑙i噴錛屾墍浠ヨ繖閲屽彧鏄彁涓涓嬶紝鍦╳in32涓紝wchar_t鐨勭紪鐮佹槸UCS-2BE錛涜孡inux涓槸UTF-32BE錛堢瓑浠蜂簬UCS-4BE錛夛紝涓嶈繃綆鍗曠殑璇達紝鍦?6浣嶄互鍐咃紝涓涓瓧絎︾殑榪?縐嶇紪鐮佸兼槸涓鏍風殑銆傚洜姝わ細
const wchar_t* ws = L"涓枃abc";
鐨勭紪鐮佸垎鍒負錛?br>0x4E2D   0x6587    0x0061   0x0062   0x0063                                                //win32錛?6浣?br>0x00004E2D   0x00006587    0x00000061   0x00000062   0x00000063        //Linux錛?2浣?br>澶у啓鐨凩鏄憡璇夌紪璇戝櫒錛氳繖鏄瀛楃涓層傛墍浠ワ紝榪欐椂鍊欐槸闇瑕佺紪璇戝櫒鏍規(guī)嵁locale鏉ヨ繘琛岀炕璇戠殑銆?br>姣斿錛屽湪Windows鐜涓紝緙栬瘧鍣ㄧ殑緲昏瘧絳栫暐鏄疓B2312鍒癠CS-2BE錛汱inux鐜涓殑絳栫暐鏄疷TF-8鍒癠TF-32BE銆?br>榪欐椂鍊欏氨瑕佹眰婧愭枃浠剁殑緙栫爜涓庣紪璇戝櫒鐨勬湰鍦板寲絳栫暐闆嗕腑浠g爜緲昏瘧鐨勭瓥鐣ヤ竴鑷達紝渚嬪VC鍙兘璇誨彇GB2312鐨勬簮浠g爜錛堣繖閲岃繕鏄緥澶栵紝VC澶嚜浣滆仾鏄庝簡 錛屼細灝嗗緢澶氬叾浠栦唬鐮佸湪緙栬瘧鏃惰嚜鍔ㄨ漿鎹㈡垚GB2312錛夛紝鑰実cc鍙兘璇誨彇UTF-8鐨勬簮浠g爜錛堣繖閲屽氨鏈変釜灝村艾錛孧inGW榪愯win32涓嬶紝鎵浠ュ彧鏈塆B2312緋葷粺鎵嶈錛涜孧inGW鍗寸敤gcc緙栧啓錛屾墍浠ヨ嚜宸卞彧璁TF-8錛屾墍浠ョ粨鏋滃氨鏄紝MinGW鐨勫瀛楃琚簾鎺変簡錛夈?br>瀹藉瓧絎︼紙涓詫級鐢辯紪璇戝櫒緲昏瘧錛岃繕鏄紜紪鐮佽繘紼嬪簭鏂囦歡涓?

lf426 2010-06-25 14:41 鍙戣〃璇勮
]]>
榪唬鍣紙iterator錛夆滄摝鈥濓紙erase錛夊嚭鐨勯敊璇?/title><link>http://www.shnenglu.com/lf426/archive/2010/06/10/117545.html</link><dc:creator>lf426</dc:creator><author>lf426</author><pubDate>Thu, 10 Jun 2010 03:03:00 GMT</pubDate><guid>http://www.shnenglu.com/lf426/archive/2010/06/10/117545.html</guid><wfw:comment>http://www.shnenglu.com/lf426/comments/117545.html</wfw:comment><comments>http://www.shnenglu.com/lf426/archive/2010/06/10/117545.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/lf426/comments/commentRss/117545.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/lf426/services/trackbacks/117545.html</trackback:ping><description><![CDATA[<p>璁捐涓孌墊紨紺虹▼搴忥細鎵撳嵃n涓暟瀛楋紝鐒跺悗鎸囧畾鎿︽帀鍏朵腑鐨勬煇涓涓紝閲嶆柊鎵撳嵃鍓╀笅鐨勬暟瀛椼?/p> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">#include </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br>#include </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">vector</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br><br></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000"> std::cout;<br></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000"> std::cin;<br></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000"> std::endl;<br></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000"> std::vector;<br><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> argc, </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> argv[])<br>{<br>    </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> MAX </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">;<br>    vector</span><span style="COLOR: #000000"><</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> v;<br>    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; i </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000"> MAX; i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">) {<br>        v.push_back(i);<br>        cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> v[i] </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">\t</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br>    }<br><br>    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> ers </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br>    </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000"> ( ers </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">||</span><span style="COLOR: #000000"> ers </span><span style="COLOR: #000000">>=</span><span style="COLOR: #000000"> MAX) {<br>        cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Erase No.</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>        cin </span><span style="COLOR: #000000">>></span><span style="COLOR: #000000"> ers;<br>    }<br><br>    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (vector</span><span style="COLOR: #000000"><</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">></span><span style="COLOR: #000000">::const_iterator i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> v.begin(); i </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> v.end(); i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">) {<br>        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">i </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> ers) {<br>            v.erase(i);<br>        }<br>    }<br><br>    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (vector</span><span style="COLOR: #000000"><</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">></span><span style="COLOR: #000000">::const_iterator i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> v.begin(); i </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> v.end(); i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">) {<br>        cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">i </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">\t</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br>    }<br>    cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> endl;<br><br>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}</span></div> 榪欎釜紼嬪簭鐪嬩技娌′粈涔堥敊璇紝鍙互欏哄埄緙栬瘧錛屼篃鍙互欏哄埄榪愯錛岀敋鑷籌紝澶ч儴鍒嗘儏鍐典笅鍙彲浠ユ甯稿畬鎴愩?br>鎴戜滑榪欓噷璁劇疆鐨刵涓?0錛圡AX錛夛紝浜嬪疄涓婏紝鎴戜滑鎿︽帀0鍒?閮芥病鏈夐棶棰橈紝浣嗘槸錛屾垜浠鎿︽帀9鐨勬椂鍊欙紝紼嬪簭鍗村嚭閿欎簡錛?br>鍦ㄦ垜浠亶鍘嗘煡鎵懼絳夊肩殑寰幆涓紝涓寮濮媣.end()鎸囧悜絎?0涓厓绱狅紙鏁板間負9錛夌殑鍚庨潰涓涓綅緗紙涓嶅瓨鍦ㄧ殑絎?1涓厓绱犵殑浣嶇疆錛夈傚綋榪唬鍣ㄦ寚鍚戠10涓厓绱狅紙鏁板間負9錛夌殑鏃跺欙紝v.erase()鐢熸晥榪愯錛涗笅涓杞驚鐜腑錛岃凱浠e櫒鏈潵搴旇鎸囧悜絎?1涓厓绱犵殑浣嶇疆錛屽茍涓旂瓑浜巚.end()騫剁粨鏉熷驚鐜備絾鏄紝鍥犱負鎴戜滑鎿︽帀浜唙ector涓殑涓涓厓绱狅紝v.end()鎸囧悜鐨勬槸鐜板湪鐨勬渶鍚庝竴涓厓绱犫斺旂9涓厓绱犵殑鍚庨潰錛屼篃灝辨槸絎?0涓厓绱犵殑浣嶇疆銆傝繖鏍鳳紝榪唬鍣ㄥ埌浜?1錛岃屽垽鏂‘鏄叾鏄惁鍒?0錛岃繖灝嗘案榪滄棤娉曞疄鐜幫紝褰㈡垚浜嗕竴涓昏緫bug錛屾墍浠ョ郴緇熸姏鍑洪敊璇簡銆?br>涓涓慨姝g殑鍔炴硶鏄妸闇瑕佹摝鎺夌殑榪唬鍣ㄦ壘鍑烘潵錛屽湪寰幆緇撴潫鍚庡啀鎿︽帀錛屼笅闈慨鏀瑰悗鐨勭▼搴忓氨鍙互姝e父鐨勬摝鎺?浜嗐?br> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">#include </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br>#include </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">vector</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br><br></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000"> std::cout;<br></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000"> std::cin;<br></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000"> std::endl;<br></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000"> std::vector;<br><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> argc, </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> argv[])<br>{<br>    </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> MAX </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">;<br>    vector</span><span style="COLOR: #000000"><</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> v;<br>    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; i </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000"> MAX; i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">) {<br>        v.push_back(i);<br>        cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> v[i] </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">\t</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br>    }<br><br>    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> ers </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br>    </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000"> ( ers </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">||</span><span style="COLOR: #000000"> ers </span><span style="COLOR: #000000">>=</span><span style="COLOR: #000000"> MAX) {<br>        cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Erase No.</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>        cin </span><span style="COLOR: #000000">>></span><span style="COLOR: #000000"> ers;<br>    }<br><br>    vector</span><span style="COLOR: #000000"><</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">></span><span style="COLOR: #000000">::const_iterator ers_i;<br>    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (vector</span><span style="COLOR: #000000"><</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">></span><span style="COLOR: #000000">::const_iterator i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> v.begin(); i </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> v.end(); i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">) {<br>        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">i </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> ers) {<br>            ers_i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> i;<br>        }<br>    }<br>    v.erase(ers_i);<br><br>    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (vector</span><span style="COLOR: #000000"><</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">></span><span style="COLOR: #000000">::const_iterator i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> v.begin(); i </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> v.end(); i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">) {<br>        cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">i </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">\t</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br>    }<br>    cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> endl;<br><br>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}</span></div> <img src ="http://www.shnenglu.com/lf426/aggbug/117545.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/lf426/" target="_blank">lf426</a> 2010-06-10 11:03 <a href="http://www.shnenglu.com/lf426/archive/2010/06/10/117545.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鐢ㄥ璞$殑鎴愬憳鍑芥暟寮曞嚭綰跨▼錛岃繕鏄湪綰跨▼涓垱寤哄璞★紵http://www.shnenglu.com/lf426/archive/2010/06/05/117242.htmllf426lf426Sat, 05 Jun 2010 13:06:00 GMThttp://www.shnenglu.com/lf426/archive/2010/06/05/117242.htmlhttp://www.shnenglu.com/lf426/comments/117242.htmlhttp://www.shnenglu.com/lf426/archive/2010/06/05/117242.html#Feedback0http://www.shnenglu.com/lf426/comments/commentRss/117242.htmlhttp://www.shnenglu.com/lf426/services/trackbacks/117242.html涔嬫墍浠ユ彁鍑篢estClass2榪欑綾伙紝鏄洜涓哄湪瀹為檯緙栫▼涓垜浠細閬囧埌榪欑鎯呭喌錛氭垜浠笉鍙鐭ヨ繖涓被浣曟椂鍒涘緩浠ュ強鍒涘緩澶氬皯錛涜繖涓被鐨勫璞℃槸涓涓柊綰跨▼鐨勫弬鏁般傛瘮濡傦紝鍦╯okcet涓殑TCP server绔氨浼氭湁榪欑鎯呭喌錛氬鏋滄瘡涓涓柊榪炴帴鐨刢lient閮界敤鍒涘緩涓涓柊鐨勭嚎紼嬪幓澶勭悊錛屾垜浠笉鍙鐭ュ湪浠涔堟椂鍊欎細鏈夊灝戝鎴風榪炶繃鏉ャ?br>鎴戜滑鍏堣瀵熸病鏈夊綰跨▼鐨勬椂鍊欏璞$殑鐢熷懡鍛ㄦ湡錛?br>
#include <iostream>
#include 
"windows.h"

class TestClass1{
private:
    
int x;
public:
    
explicit TestClass1(int to_x):x(to_x)
    {}
    
~TestClass1()
    {
        std::cerr 
<< "destruction: 1." << std::endl;
    }
    
void show() const
    {
        std::cerr 
<< x << std::endl;
    }
};

class TestClass2{
private:
    
int* pX;
public:
    
explicit TestClass2(int to_x)
    {
        pX 
= new int;
        
*pX = to_x;
    }
    
~TestClass2()
    {
        delete pX;
        std::cerr 
<< "destruction: 2."  << std::endl;
    }
    
const int& value() const
    {
        
return *pX;
    }
};

DWORD WINAPI thread_func(LPVOID pN)
{
    Sleep(
200);
    TestClass1 test((
*((TestClass2*)pN)).value());
    test.show();
    
return 0;
}

int main(int argc, char* argv[])
{
    
for (int i = 0; i < 3++i) {
        TestClass2 n(
5);
        
        thread_func((LPVOID)
&n);
        std::cerr 
<< "loop: " << i+1 << std::endl;
    }

    Sleep(
2000);

    std::cout 
<< "main() ok." << std::endl;

    
return 0;
}
榪欐槸鏍囧噯鐨凜++妯″紡錛屽璞$殑鐢熷懡鍛ㄦ湡鏄彲浠ラ瑙佺殑錛?br>
5
destruction: 
1.
loop: 
1
destruction: 
2.
5
destruction: 
1.
loop: 
2
destruction: 
2.
5
destruction: 
1.
loop: 
3
destruction: 
2.
main() ok.
璇鋒寜浠繪剰閿戶緇? . .
濡傛灉鎴戜滑鏀規(guī)垚綰跨▼璋冪敤錛?br>
#include <iostream>
#include 
"windows.h"

class TestClass1{
private:
    
int x;
public:
    
explicit TestClass1(int to_x):x(to_x)
    {}
    
~TestClass1()
    {
        std::cerr 
<< "destruction: 1." << std::endl;
    }
    
void show() const
    {
        std::cerr 
<< x << std::endl;
    }
};

class TestClass2{
private:
    
int* pX;
public:
    
explicit TestClass2(int to_x)
    {
        pX 
= new int;
        
*pX = to_x;
    }
    
~TestClass2()
    {
        delete pX;
        std::cerr 
<< "destruction: 2."  << std::endl;
    }
    
const int& value() const
    {
        
return *pX;
    }
};

DWORD WINAPI thread_func(LPVOID pN)
{
    Sleep(
200);
    TestClass1 test((
*((TestClass2*)pN)).value());
    test.show();
    
return 0;
}

int main(int argc, char* argv[])
{
    
for (int i = 0; i < 3++i) {
        TestClass2 n(
5);
        
        HANDLE hThrd;
        DWORD thrdId;
        hThrd 
= CreateThread(    NULL,
                                
0,
                                thread_func,
                                (LPVOID)
&n,
                                
0,
                                
&thrdId);
        
        std::cerr 
<< "loop: " << i+1 << std::endl;
    }

    Sleep(
2000);

    std::cout 
<< "main() ok." << std::endl;

    
return 0;
}
鍙互鐪嬪埌鍑芥暟榪斿洖浜嗛敊璇殑鍊鹼紙鑷充簬涓轟粈涔堟瘡嬈¢兘鏄?6鎴戣繕涓嶆竻妤氾紝浣嗘槸鑷沖皯涓嶆槸姝g‘鐨勬暟瀛?錛夛紝榪欐槸鍥犱負鍦ㄧ嚎紼嬭皟鐢═estClass2鐨勫璞′箣鍓嶅凡緇忚鏋愭瀯鐨勭紭鏁呫?br>
loop: 1
destruction: 
2.
loop: 
2
destruction: 
2.
loop: 
3
destruction: 
2.
36
destruction: 
1.
36
destruction: 
1.
36
destruction: 
1.
main() ok.
璇鋒寜浠繪剰閿戶緇? . .
鎵浠ワ紝濡傛灉鎴戜滑璁炬兂鏋勯犱竴涓被錛岃繖涓被鐨勫璞″彲浠ヨ皟鐢ㄥ寘鍚玹his鐨勭嚎紼嬶紝閭d箞榪欎釜瀵硅薄涓瀹氫笉鑳芥槸灞閮ㄥ彉閲忥紝鎴栬呰錛屾垜浠繀欏誨湪寰幆鐨剓}瀵逛箣鍓嶅厛鎶婅繖浜涘璞℃瀯閫犲嚭鏉ャ傝繖涓庢垜浠殑闇姹備笉絎﹀悎鈥斺旀垜浠茍涓嶇煡閬撻渶瑕佸灝戝璞′互鍙婂浣曟瀯閫狅紙姣斿鏋勯燭CP鐨勯氳socket闇瑕乤ccept()鎺ュ彈瀹㈡埛绔殑淇℃伅錛夛紝鍦ㄨ繖縐嶆儏鍐典笅錛屾垜浠彧鑳藉湪綰跨▼涓幓鏋勯犲璞★紝榪欐牱鐨勫璞$敓鍛藉懆鏈熻窡綰跨▼鍑芥暟涓鏍楓?br>鎴栬呰錛屽鏋滄垜浠笇鏈涚敤綾繪潵灝佽綰跨▼錛岄偅涔堣繖浜涘彲浠ヨ皟鐢ㄧ嚎紼嬬殑瀵硅薄蹇呴』鏄叏灞鐨勩傜浉鍏沖唴瀹硅鍙傝冩湰浜哄墠闈㈢殑鏁欑▼“鍒濊瘯澶氱嚎紼?#8221;絳夈?

lf426 2010-06-05 21:06 鍙戣〃璇勮
]]>
鍦ㄥ綰跨▼涓姏鍑虹殑寮傚父鍑洪敊錛?/title><link>http://www.shnenglu.com/lf426/archive/2010/06/05/117241.html</link><dc:creator>lf426</dc:creator><author>lf426</author><pubDate>Sat, 05 Jun 2010 12:16:00 GMT</pubDate><guid>http://www.shnenglu.com/lf426/archive/2010/06/05/117241.html</guid><wfw:comment>http://www.shnenglu.com/lf426/comments/117241.html</wfw:comment><comments>http://www.shnenglu.com/lf426/archive/2010/06/05/117241.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/lf426/comments/commentRss/117241.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/lf426/services/trackbacks/117241.html</trackback:ping><description><![CDATA[浠ヤ笅浠in32騫沖彴涓轟緥銆傛垜浠厛鐪嬩竴涓潪澶氱嚎紼嬬殑紼嬪簭錛?br> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">#include </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br>#include </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">windows.h</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br><br>DWORD WINAPI thread_func(LPVOID pN)<br>{<br>    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; i </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">((</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)pN); </span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">i) {<br>        std::cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> i</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\t</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>    }<br>    std::cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> std::endl;<br>    </span><span style="COLOR: #0000ff">throw</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ok.</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><br>    std::cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">thread_func() done.</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> std::endl;<br>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}<br><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> argc, </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> argv[])<br>{<br>    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> n </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">;<br><br>    </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">{<br>    thread_func((LPVOID)</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">n);<br>    Sleep(</span><span style="COLOR: #000000">2000</span><span style="COLOR: #000000">);<br>    }<br>    </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> s) {<br>        std::cerr </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> s </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> std::endl;<br>        exit(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br>    }<br><br>    std::cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">main() done.</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> std::endl;<br><br>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}</span></div> 鍙互鐪嬪埌錛屽嚱鏁皌hread_func()鍙互姝g‘鐨勬姏鍑哄紓甯稿茍琚玬ain()鐨刢atch鎹曟崏銆備絾鏄紝濡傛灉鐢ㄤ竴涓柊綰跨▼鏉ヨ繍琛宼hread_func()浼氬嚭鐜頒粈涔堟儏鍐靛憿錛?br> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">#include </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br>#include </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">windows.h</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br><br>DWORD WINAPI thread_func(LPVOID pN)<br>{<br>    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; i </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">((</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)pN); </span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">i) {<br>        std::cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> i</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\t</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>    }<br>    std::cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> std::endl;<br>    </span><span style="COLOR: #0000ff">throw</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ok.</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><br>    std::cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">thread_func() done.</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> std::endl;<br>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}<br><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> argc, </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> argv[])<br>{<br>    HANDLE hThrd;<br>    DWORD thrdId;<br>    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> n </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">;<br><br>    </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">{<br>    hThrd </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> CreateThread(    NULL,<br>                            </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,<br>                            thread_func,<br>                            (LPVOID)</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">n,<br>                            </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,<br>                            </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">thrdId);<br>    Sleep(</span><span style="COLOR: #000000">2000</span><span style="COLOR: #000000">);<br>    }<br>    </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> s) {<br>        std::cerr </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> s </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> std::endl;<br>        exit(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br>    }<br><br>    std::cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">main() done.</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> std::endl;<br><br>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}</span></div> 寰堜笉騫革紝榪欎釜紼嬪簭緙栬瘧鐨勬椂鍊欐槸鍙互閫氳繃鐨勶紝浣嗘槸榪愯鏃跺嚭閿欙細<br> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">1</span><span style="COLOR: #000000">       </span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">       </span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">       </span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">       </span><span style="COLOR: #000000">5</span><span style="COLOR: #000000"><br><br>This application has requested the Runtime to terminate it </span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000"> an unusual way.<br>Please contact the application</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">s support team for more information.</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">璇鋒寜浠繪剰閿戶緇? . .</span></div> 鑰屼笖鍚屾椂浼氭湁涓涓繍琛屾椂閿欒鐨勬彁紺恒備簨瀹炰笂錛岃繖涓敊璇彁紺烘剰鍛崇潃紼嬪簭鍦ㄦ病鏈夊彂鐜皌ry{}鐨勬椂鍊欑湅鍒頒簡throw銆?br>閫氳繃璇曢獙錛屾垜鍙戠幇緋葷粺錛堣繖閲屾槸win32錛変笉鑳藉皢CreateThread()鎵浜х敓鐨勭嚎紼嬪綊緇撳埌try{}涓傛洿鍔犱弗閲嶇殑鎯呭喌鏄紝鍗充嬌鐢ㄤ竴涓嚱鏁板泭鎷簡鏁翠釜紼嬪簭錛岀劧鍚巘ry榪欎釜鍑芥暟錛屽叾浠栫嚎紼嬩緷鐒惰劚紱諱簡榪欎釜try銆?br>鎵浠ワ紝涓涓В鍐蟲柟娉曟槸錛屽嚒鏄亣鍒版柊鐨勭嚎紼嬶紝蹇呴』鍦ㄦ柊綰跨▼涓噸鏂板啓寮傚父澶勭悊銆備笉鐒訛紝灝卞google浠g爜鏍囧噯閲屾墍璇寸殑閭f牱錛屼笉浣跨敤C++鐨勫紓甯告満鍒躲傛瘯绔烠++娌℃湁瀹氫箟澶氱嚎紼嬬殑鏍囧噯錛屾墍浠ヤ篃灝辨棤浠庤璧峰綰跨▼涓紓甯稿鐞嗙殑鏍囧噯銆?br>鏈鍚庨檮涓婂湪鏂扮嚎紼嬪啓寮傚父澶勭悊鐨勫弬鑰冿細<br> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">#include </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br>#include </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">windows.h</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br><br>DWORD WINAPI thread_func(LPVOID pN)<br>{<br>    </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">{<br>    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; i </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">((</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)pN); </span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">i) {<br>        std::cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> i</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\t</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>    }<br>    std::cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> std::endl;<br>    </span><span style="COLOR: #0000ff">throw</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ok.</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>    }<br>    </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> s) {<br>        std::cerr </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> s </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> std::endl;<br>        exit(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br>    }<br><br>    std::cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">thread_func() done.</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> std::endl;<br>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}<br><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> argc, </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> argv[])<br>{<br>    HANDLE hThrd;<br>    DWORD thrdId;<br>    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> n </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">;<br><br>    hThrd </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> CreateThread(    NULL,<br>                            </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,<br>                            thread_func,<br>                            (LPVOID)</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">n,<br>                            </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,<br>                            </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">thrdId);<br>    Sleep(</span><span style="COLOR: #000000">2000</span><span style="COLOR: #000000">);<br><br>    std::cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">main() done.</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> std::endl;<br><br>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}</span></div> <img src ="http://www.shnenglu.com/lf426/aggbug/117241.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/lf426/" target="_blank">lf426</a> 2010-06-05 20:16 <a href="http://www.shnenglu.com/lf426/archive/2010/06/05/117241.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍑芥暟鎸囬拡涓庢垚鍛樺嚱鏁版寚閽?/title><link>http://www.shnenglu.com/lf426/archive/2008/04/26/48182.html</link><dc:creator>lf426</dc:creator><author>lf426</author><pubDate>Sat, 26 Apr 2008 04:39:00 GMT</pubDate><guid>http://www.shnenglu.com/lf426/archive/2008/04/26/48182.html</guid><wfw:comment>http://www.shnenglu.com/lf426/comments/48182.html</wfw:comment><comments>http://www.shnenglu.com/lf426/archive/2008/04/26/48182.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/lf426/comments/commentRss/48182.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/lf426/services/trackbacks/48182.html</trackback:ping><description><![CDATA[        娓告垙鐨勮璁$涓嶅紑澶氱嚎紼嬶紝鍦–++鏂版爣鍑嗗嚭鏉ヤ箣鍓嶏紝澶氱嚎紼嬬殑璁捐榪樻槸澶氫互渚濊禆鐗瑰畾緋葷粺鐨勫嚱鏁板簱鎴栬呮煇浜涚壒瀹氱殑鍑芥暟搴撲負涓伙紝濡傚悓SDL錛屾墦寮澶氱嚎紼嬬殑鍑芥暟涔熶富瑕佹槸C鍑芥暟銆傛垜浠綋鐒跺緢鏈熷緟boost涓湡姝f剰涔変笂鐨凜++澶氱嚎紼嬬被鐨勫姞鍏ワ紝涓嶈繃浠嶇劧闇瑕佺瓑寰呫傞棶棰樺氨鍑哄湪鎵撳紑澶氱嚎紼嬬殑C鍑芥暟涓婏紝鍥犱負浠栦滑閫氬父璋冪敤鐨勬槸鍑芥暟鎸囬拡錛屼絾鏄湪C++涓紝鎴戜滑閫氬父鎶婂嚱鏁扮粦瀹氬埌浜嗕笌鍏舵暟鎹浉鍏崇殑綾諱腑錛屼篃灝辨槸璇達紝鎴戜滑鍦–++涓緢灝戠敤鍒?#8220;鍗曡韓”鐨勫嚱鏁幫紝鎴愬憳鍑芥暟鍙互琚偅浜涜皟鐢ㄥ嚱鏁版寚閽堢殑鍚姩澶氱嚎紼嬬殑鍑芥暟璋冪敤鍚楋紵<br>        絳旀鏄細閫氬父涓嶈錛屼絾鏄潤鎬佹垚鍛樺嚱鏁頒緥澶栥?br>        鍦–++涓紝鍑芥暟鎸囬拡涓庢垚鍛樺嚱鏁版寚閽堝畬鍏ㄦ槸涓や釜姒傚康錛屽茍涓旂浉浜掍箣闂村湪浠諱綍鎯呭喌涓嬶紝鏃犳硶杞崲錛?br>        鎴戜滑鏉ョ湅榪欎箞涓涓被錛?br> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">#include </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br><br></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> A<br>{<br></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br>    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> a;<br></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br>    A(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> _a): a(_a)<br>    {}<br>    </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> f1() </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"><br>    {<br>        std::cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">call f1, a = </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> a </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> std::endl;<br>    }<br>    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> f2() </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"><br>    {<br>        std::cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">call f2, a = </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> a </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> std::endl;<br>        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>    }<br>    </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> f3(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> A</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> _a)<br>    {<br>        std::cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">call f3, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>        _a.f1();<br>    }<br>    friend </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> f4(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> A</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> _a)<br>    {<br>        std::cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">call f4, a = </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> _a.a </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> std::endl;<br>    }<br>};</span></div> 鍏朵腑鍑芥暟A::f1()鍜孉::f2()鏄鏃犵枒闂殑鎴愬憳鍑芥暟錛汚::f3()涔熸槸鎴愬憳鍑芥暟錛屼絾鏄粬鏄潤鎬佹垚鍛樺嚱鏁幫紱f4()鏄疉綾葷殑鍙嬪厓鍑芥暟錛屼粬瀹為檯涓婂氨鏄竴涓櫘閫氱殑鍑芥暟銆?br>A::f1()鐨勬寚閽堟垜浠渶瑕佽繖鏍峰畾涔夛細<br> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">typedef </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> (A::</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pcf)()</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">;</span></div> 浣滀負鍙傛暟鐨勬椂鍊欏繀欏昏繖鏍峰啓“&A::f1”銆?br>A::f2()鐨勬寚閽堟垜浠繖鏍峰畾涔夛細<br> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">typedef </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> (A::</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">ptf)()</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">;</span></div> 灝界A::f2()涓嶢::f1()鐨勮繑鍥炵被鍨嬩笉鍚岋紝浣嗘槸浠栦滑鐨勫艦鍙傚垪琛ㄦ槸涓鏍風殑錛屾墍浠ワ紝鎸囬拡鍙互閫氳繃寮哄埗杞崲榪涜杞崲銆?br>濡傛灉浠栦滑鐨勫艦鍙傚垪琛ㄤ笉涓鑷達紝鍒欏己鍒惰漿鎹㈠湪緙栬瘧鏈熼棿娌℃湁闂錛屼絾鏄繍琛屾椂浼氭姏鍑哄紓甯搞?br>榪欐槸鍥犱負褰㈠弬鍒楄〃涓嶄竴鏍鋒剰鍛崇潃寮哄埗杞崲鍚庯紝鏌愪簺鍑芥暟鏃犳硶寰楀埌鏌愪簺蹇呴』鐨勫弬鏁般傛墍浠ワ紝榪欑杞崲搴旇鏄渶瑕侀伩鍏嶇殑銆?br>A::f3()鍜宖4()灝界涓涓槸闈欐佹垚鍛樺嚱鏁幫紝涓涓槸鏅氬嚱鏁幫紝浣嗘槸浠栦滑鐨勬寚閽堝畾涔夊嵈鏄竴鏍風殑錛?br> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">typedef </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> (</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pf)(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> A</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">);</span></div> 榪欎篃灝辨槸涓轟粈涔堣皟鐢ㄥ嚱鏁版寚閽堢殑鍑芥暟鍙互鐩存帴璋冪敤闈欐佹垚鍛樺嚱鏁版寚閽堢殑鍘熷洜銆?br>浣滀負鍙傛暟鐨勬椂鍊欙紝浠栦滑鏃㈠彲浠ュ姞涓?#8220;&”鏉ュ啓錛?#8220;&A::f3”, “&f4”錛?br>涔熷彲浠ヤ笉鐢?#8220;&”錛?#8220;A::f3”, “f4”銆?br>榪欐槸鍦ˋ綾誨畾涔夊煙澶栫殑鎯呭喌銆傚湪A瀹氫箟鍩熷唴錛屾瘮濡傚湪鍐橝鐨勬垚鍛樺嚱鏁扮殑鏃跺欙紝闈欐佹垚鍛樺嚱鏁扮敋鑷沖彲浠ヤ笉闇瑕佸姞涓夾鐨勫畾涔夊煙絎﹀彿“A::”錛岀洿鎺ュ彲浠ヤ嬌鐢?#8220;&f3”鎴栬?#8220;f3”銆?br> <br>鎴戜滑鎶婂墿涓嬬殑紼嬪簭琛ュ厖瀹屾暣錛?br> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> call_A(pcf pF, </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> A</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> _a)<br>{<br>    (_a.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pF)();<br>}<br><br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> call_A(pf pF, </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> A</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> _a)<br>{<br>    (</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pF)(_a);<br>}<br><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> argc, </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> argv[])<br>{<br>    A a(</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">);<br><br>    call_A(</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">A::f1, a);<br><br>    ptf __f2 </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">A::f2;<br>    pcf _f2 </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (pcf)(__f2);<br>    call_A(_f2, a);<br><br>    call_A(A::f3, a);<br><br>    call_A(f4, a);<br><br>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}</span></div> 鍙互鐪嬪埌鐨勬儏鍐墊槸錛?br>1銆佹垚鍛樺嚱鏁扮殑鎸囬拡涓庡璞℃槸涓嶇粦瀹氱殑銆備篃灝辨槸璇達紝灝界鎴戜篃寰堝笇鏈涘鏋渁鏄疉鐨勫璞★紝a.f1()鐨勬寚閽堣鏄兘琛ㄧず鎴恆.f1錛堟垨鑰?#8220;&(a.f1)”錛夊濂斤紵浣嗘槸榪欐槸涓嶅厑璁哥殑錛岃嚦灝戠幇鍦ㄦ槸涓嶅厑璁哥殑銆傛垜浠璋冪敤A::f1()鏂規(guī)硶錛岃繕寰楁寚瀹氬叾瀵硅薄錛屾墍浠ワ紝榪欏疄闄呬笂涓庤皟鐢ㄩ潤鎬佹垚鍛樺嚱鏁頒笌鏅氬嚱鏁版槸涓鏍風殑銆?br>2銆侀潤鎬佹垚鍛樺嚱鏁板彲浠ヤ唬鏇挎櫘閫氬嚱鏁拌璋冪敤鍑芥暟鎸囬拡錛堥潪鎴愬憳鍑芥暟鎸囬拡錛夌殑鍑芥暟璋冪敤銆備絾鏄潤鎬佹垚鍛樺嚱鏁版湁涓涓ソ澶勶紝灝辨槸鍙互琚被縐佹湁淇濇姢璧鋒潵鈥斺斿綋鐒訛紝鏈濂芥槸鏈夊叾浠栧叕鍏辨垚鍛樺皢鍏朵綔鐢ㄥ澶栬繛鎺ヨ搗鏉ョ殑鏃跺欍? <img src ="http://www.shnenglu.com/lf426/aggbug/48182.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/lf426/" target="_blank">lf426</a> 2008-04-26 12:39 <a href="http://www.shnenglu.com/lf426/archive/2008/04/26/48182.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鎴愬憳鏁版嵁鐨勪笁縐嶅艦寮忎笌鏍堝璞$殑鐢熷懡鍛ㄦ湡http://www.shnenglu.com/lf426/archive/2008/04/14/47029.htmllf426lf426Mon, 14 Apr 2008 04:36:00 GMThttp://www.shnenglu.com/lf426/archive/2008/04/14/47029.htmlhttp://www.shnenglu.com/lf426/comments/47029.htmlhttp://www.shnenglu.com/lf426/archive/2008/04/14/47029.html#Feedback0http://www.shnenglu.com/lf426/comments/commentRss/47029.htmlhttp://www.shnenglu.com/lf426/services/trackbacks/47029.html鏈鐩存帴鐨勶紝鎴戜滑鍙互灝辨妸瀹冨畾涔変負A鐨勫璞★細A a_obj;
鍏舵錛屾垜浠彲浠ユ妸瀹冨畾涔変負A瀵硅薄鐨勫紩鐢細A& a_obj; 鎴栬卌onst寮曠敤錛歝onst A& a_obj;
鍐嶈咃紝鎴戜滑榪樺彲浠ユ妸瀹冨畾涔変負A瀵硅薄鐨勬寚閽堬細A* pA_obj; 鎴栬卌onst瀵硅薄鐨勬寚閽堬細const A* pA_obj;
        褰撴垜浠洿鎺ヤ嬌鐢ˋ瀵硅薄鐨勬椂鍊欙紝a_obj浼氬湪B瀵硅薄寤虹珛鐨勬椂鍊欏緩绔嬶紝鍦˙閿姣佺殑鏃跺欓攢姣併傚洜涓鴻繖鏄竴涓柊寤虹珛鐨勫璞★紝鎵浠ュ湪鎴愬憳鍒濆鍖栫殑鏃跺欐槸鐪熸鏋勯犱簡瀵硅薄錛屽嵆鎴戜滑鍓嶉潰璇村埌鐨勪嬌鐢ㄤ簡澶嶅埗鏋勯犲嚱鏁般?br>        濡傛灉浣跨敤鐨勬槸A瀵硅薄鐨勫紩鐢ㄦ垨鑰呮寚閽堬紝a_obj錛堟垨pA_obj錛夐兘娌℃湁鏋勯犳柊鐨勫璞°傛垜浠亣璁綛鐨勪竴涓瀯閫犲嚱鏁版槸榪欐牱鐨勶細B(const A& a_obj): a_obj(a_obj) {}錛岄偅涔堟鏃犵枒闂紝榪欎釜鏋勯犲嚱鏁版槸鑳芥甯稿伐浣滅殑錛屼篃灝辨槸璇達紝鎴戜滑鐢ㄧ幇鎴愮殑瀵硅薄錛屾垨鑰呰鏄湪B瀵硅薄鐢熷懡鍛ㄦ湡鍐呴兘浼氫竴鐩村瓨鍦ㄧ殑A瀵硅薄鍘繪瀯閫燘瀵硅薄鏄病鏈夐棶棰樼殑銆備絾鏄紝濡傛灉涓涓瀯閫犲嚱鏁版槸榪欐牱鐨勶細B(int a): a_obj(A(a)) {}錛岃繖涓嚱鏁幫紝涓鑸湪緙栬瘧鐨勬椂鍊欐槸涓嶄細鎶ラ敊鎴栬呭彂鍑鴻鍛婄殑錛屼絾鏄垜浠垎鏋愪竴涓嬶紝A(a)鏄復鏃舵瀯閫犱簡涓涓狝瀵硅薄錛岀劧鍚巃_obj鎴愪負浜嗚繖涓復鏃跺璞$殑寮曠敤銆備絾鏄棶棰樻槸錛岃繖涓復鏃跺璞″湪B瀵硅薄鏋勯犱箣鍚庡氨椹笂閿姣佷簡錛屼篃灝辨槸璇達紝a_obj寮曠敤浜嗕竴涓笉瀛樺湪鐨勫璞★紙鎹㈠埌鎸囬拡璇村氨鏄寚鍚戜簡絀烘寚閽堬級銆傝繖鏄竴涓法澶х殑閿欒錛屽皢鍦ㄨ繍琛屾椂寮曞彂閿欒銆?br>        鎵浠ワ紝緇撹鏄細濡傛灉鎴愬憳鏁版嵁浣跨敤錛堟柊錛夊璞★紝鍒欏繀欏誨畾涔夎繖涓璞℃墍灞炵被鐨勫鍒舵瀯閫犲嚱鏁幫紱濡傛灉浣跨敤鐨勬槸瀵硅薄寮曠敤鎴栬呮寚閽堬紝鍒欎竴瀹氬彧鑳界敤宸茬粡瀛樺湪騫朵笖浼氬湪B瀵硅薄鏁翠釜鐢熷懡鍛ㄦ湡鍐呴兘瀛樺湪鐨凙瀵硅薄鏉ユ瀯閫犺繖涓狟瀵硅薄銆?br>        璇村緱璨屼技寰堝鏉傦紝鐣欎釜浣滀負渚嬪瓙鐨?涓被錛屽ぇ瀹跺彲浠ュ鍐欏嚑涓紨紺虹▼搴忚瘯璇曘?br>
#ifndef A_HPP
#define A_HPP

#include 
<iostream>
using namespace std;

char* get_point(int lenth);
void free_point(char* temp);

class A
{
private:
    
//
protected:
    
char* temp;
    
int lenth;
    A();
public:
    A(
const A& copy);
    
~A();
    
void show() const;
};

class C: public A
{
public:
    C(
int _lenth);
    
~C();
};


class B
{
private:
    A b;
public:
    B(
const A& a);
    B(
int _lenth);
    
~B();
    
void show() const;
};

#endif

#include "a.hpp"

A::A(): temp(
0),lenth(0)
{
    cout
<< "A Constructor!" << endl; 
}


A::A(
const A& copy): lenth(copy.lenth)
{
    temp 
= get_point(lenth);
    cout 
<< "A Copy Constructor" << endl;
    cout 
<< "temp at: " << int(temp) << endl;
}


A::
~A()
{
    cout 
<< "temp at: " << int(temp) << endl;
    free_point(temp);
    cout 
<< "Heap Deleted!\n";
    cout 
<< "A Destroyed!" << endl; 
}

void A::show() const
{
    cout 
<< temp << endl;
}


//***************************************


C::C(
int _lenth): A()
{
    lenth 
= _lenth;
    temp 
= get_point(lenth);
    cout
<< "C Constructor!" << endl; 
    cout 
<< "temp at: " << int(temp) << endl;
}

C::
~C()
{
    cout 
<< "C Destroyed!" << endl; 
}

//***************************************

 
B::B(
const A& a): b(a)
{
    cout
<< "B Constructor!" << endl; 
}

B::B(
int _lenth): b(C(_lenth))
{
    cout
<< "B Constructor!" << endl;
}

B::
~B()
{
    cout 
<< "B Destroyed!" << endl; 
}

void B::show() const
{
    b.show();
}


//************************************


char* get_point(int lenth)
{
    
char* temp = new char[lenth+1];
    
for ( int i = 0; i< lenth; i++ )
        temp[i] 
= '*';
    temp[lenth] 
= '\0';
    cout 
<< "New buffer got!\n";
    
return temp;
}

void free_point(char* temp)
{
    delete []temp;
    cout 
<< "Buffer deleted!\n";
}


lf426 2008-04-14 12:36 鍙戣〃璇勮
]]>
鍒涘緩涓嬈¢攢姣佷袱嬈★紵錛佸鍒舵瀯閫犲嚱鏁扮殑鑷村懡閿欒銆?/title><link>http://www.shnenglu.com/lf426/archive/2008/04/14/47025.html</link><dc:creator>lf426</dc:creator><author>lf426</author><pubDate>Mon, 14 Apr 2008 03:50:00 GMT</pubDate><guid>http://www.shnenglu.com/lf426/archive/2008/04/14/47025.html</guid><wfw:comment>http://www.shnenglu.com/lf426/comments/47025.html</wfw:comment><comments>http://www.shnenglu.com/lf426/archive/2008/04/14/47025.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/lf426/comments/commentRss/47025.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/lf426/services/trackbacks/47025.html</trackback:ping><description><![CDATA[<p>        C++涓烘垜浠彁渚涗簡榛樿鐨勫鍒舵瀯閫犲嚱鏁幫紝璧嬪煎嚱鏁板拰鏋愭瀯鍑芥暟錛屼嬌鐢ㄧ殑鍏ㄩ儴鏄?#8220;嫻呭鍒?#8221;錛屽嵆浠呬粎澶嶅埗鏍堜笂鐨勬暟鎹傛崲鍙ヨ瘽璇達紝濡傛灉鎴戜滑娑夊強鍒頒簡瀵瑰爢鏁版嵁鐨勬搷浣滐紝榪欎簺鍑芥暟閮藉繀欏繪垜浠嚜宸遍噸鏂版潵鍐欍傛垜寰堥儊闂蜂負浠涔堝湪緙栬瘧鐨勬椂鍊欙紝C++涓嶈兘鑷繁鍙戠幇鏋勯犲嚱鏁頒嬌鐢ㄤ簡鍫嗘搷浣滐紝浠庤屾彁閱掍笉瑕佷嬌鐢ㄩ粯璁ょ殑榪欎笁涓嚱鏁般備篃璁告槸鍥犱負瑕佺紪璇戝櫒鍋氬埌鏅鴻兘鐨勫垽鏂緢闅懼惂銆傜敤new...delete鎴栬寰堝鏄撶湅鍑烘潵錛屼絾鏄洿澶氱殑鍑芥暟璋冪敤錛岀壒鍒槸娑夊強鍒癈椋庢牸鐨勫嚱鏁扮殑鏃跺欙紝鐪熺殑寰堥毦鍒ゆ柇鍝簺鍑芥暟浣跨敤鍒頒簡鍫嗘搷浣溿?br>        鑰岃繖涓変釜鍑芥暟鐨勪綔鐢ㄥ彲浠ヨ鏄法澶х殑錛佹瀽鏋勫氨涓嶈浜嗭紝鏋愭瀯鍙互璇存槸C++姘歌繙鐨勭棝銆傚鍒舵瀯閫犲嚱鏁扮敤寰楁渶澶氱殑鍦版柟錛屾亹鎬曞氨鏄垚鍛樺垵濮嬪寲鍒楄〃鐨勬椂鍊欙紝榪欏嚑涔庢槸鍦ㄤ竴涓被鎴愬憳鏁版嵁浣跨敤鍒板彟澶栦竴涓被瀵硅薄鏃跺欑殑鍞竴鏂規(guī)硶銆傝岃祴鍊煎嚱鏁板垯鏄妸鏁版嵁浠庤鍙ヤ綋錛?#8220;{}”瀵癸紝寰幆錛屽垽鏂級涓甫鍑虹殑鏈綆鍗曟柟娉曗斺旇櫧鐒舵垜浠幇鍦ㄥ彲浠ュ緢鏂逛究鐨勪嬌鐢╲ector銆?br>        榪欓噷鍏堣璇村鍒舵瀯閫犲嚱鏁板惂銆傚鏋滈仐婕忕敵鏄庯紝鍙堜笉鎱庣敤鍒幫紝姣斿榪欎釜渚嬪瓙錛?/p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">#include </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br>#include </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">vector</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br><br></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> A<br>{<br></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br>    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> a;<br></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br>    A(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> _a): a(_a)<br>    {<br>        std::cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">A created!\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>    }<br></span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br>    A(const A& copy): a(copy.a)<br>    {<br>        std::cout << "A copy created!\n";<br>    }<br></span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br>    </span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">A()<br>    {<br>        std::cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">A destroyed!\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>    }<br>    </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> show() </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"><br>    {<br>        std::cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> a </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> std::endl;<br>    }<br>};<br><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> argc, </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> argv[])<br>{<br>    A a(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br>    A b(a);<br><br>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}</span></div> 閭d箞錛岀粨鏋滆繍琛屽氨浼氬嚭鐜拌矊浼煎垱寤轟竴嬈★紝浣嗘槸鍗撮攢姣佷簡涓ゆ鐨勫亣璞°傝繖褰撶劧鏄笉鍙兘鍙戠敓鐨勶紝浣嗘槸閮侀椃鐨勬槸錛孋++涓殑鏋勯犲拰鏋愭瀯涓嶆繪槸鎴愬鍑虹幇鐨勶紝姣斿鎴戜滑鍓嶉潰璇村埌鐨勬墜鍔ㄦ樉寮忚皟鐢ㄦ瀽鏋勫嚱鏁扮殑鎯呭喌銆傛墍浠ワ紝濡傛灉鏀懼湪澶х殑欏圭洰涓紝榪欎負鎴戜滑鐨勮皟璇曞甫鏉ユ洿澶氱殑鍥伴毦銆?br>        鎵浠ワ紝緇撹鏄紝濡傛灉A綾繪瀯閫犲叿鏈夊爢鎿嶄綔錛屾湁鍙兘鎶夾綾諱綔涓築綾葷殑鎴愬憳鏁版嵁錛孊綾誨張鏈夊彲鑳介氳繃鎴愬憳鍒濆鍖栧垪琛ㄦ瀯閫燗瀵硅薄錛岃涓瀹氬埆蹇樿鎵嬪啓澶嶅埗鏋勯犲嚱鏁般? <img src ="http://www.shnenglu.com/lf426/aggbug/47025.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/lf426/" target="_blank">lf426</a> 2008-04-14 11:50 <a href="http://www.shnenglu.com/lf426/archive/2008/04/14/47025.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鏄懼紡鏋愭瀯鍑芥暟鐨勯櫡闃?/title><link>http://www.shnenglu.com/lf426/archive/2008/04/12/46909.html</link><dc:creator>lf426</dc:creator><author>lf426</author><pubDate>Sat, 12 Apr 2008 06:29:00 GMT</pubDate><guid>http://www.shnenglu.com/lf426/archive/2008/04/12/46909.html</guid><wfw:comment>http://www.shnenglu.com/lf426/comments/46909.html</wfw:comment><comments>http://www.shnenglu.com/lf426/archive/2008/04/12/46909.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/lf426/comments/commentRss/46909.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/lf426/services/trackbacks/46909.html</trackback:ping><description><![CDATA[<p>        鍑犱箮鍦ㄥぇ閮ㄥ垎鏃跺欙紝鎴戜滑鏄笉闇瑕佹樉寮忕殑璋冪敤鏋愭瀯鍑芥暟鐨勩傛樉寮忕殑璋冪敤鏋愭瀯鍑芥暟鏄竴浠墮潪甯稿嵄闄╃殑浜嬫儏錛屽洜涓哄鏋滅郴緇熶細璋冪敤鏋愭瀯鍑芥暟錛屾棤璁烘垜浠嚜宸辨槸鍚﹀凡緇忚皟鐢ㄨ繃錛屼粛鐒朵細鍐嶆璋冪敤銆傛崲鍙ヨ瘽璇達紝鎴戜滑鑷繁鎵璋撶殑鏄懼紡璋冪敤鏋愭瀯鍑芥暟錛屽疄闄呬笂鍙槸璋冪敤浜嗕竴涓垚鍛樺嚱鏁幫紝騫舵病鏈夌湡姝f剰涔変笂鐨勮瀵硅薄“鏋愭瀯”銆?br>        涓轟簡鐞嗚В榪欎釜闂錛屾垜浠繀欏婚鍏堝紕鏄庣櫧“鍫?#8221;鍜?#8220;鏍?#8221;鐨勬蹇點?br>鍫嗗尯錛坔eap錛?nbsp;鈥斺?涓鑸敱紼嬪簭鍛樺垎閰嶉噴鏀撅紝 鑻ョ▼搴忓憳涓嶉噴鏀撅紝紼嬪簭緇撴潫鏃跺彲鑳界敱O(jiān)S鍥炴敹 銆傛敞鎰忓畠涓庢暟鎹粨鏋勪腑鐨勫爢鏄袱鍥炰簨錛屽垎閰嶆柟寮忓掓槸綾諱技浜庨摼琛ㄣ?br>鏍堝尯錛坰tack錛夆斺?鐢辯紪璇戝櫒鑷姩鍒嗛厤閲婃斁 錛屽瓨鏀懼嚱鏁扮殑鍙傛暟鍊鹼紝灞閮ㄥ彉閲忕殑鍊肩瓑銆傚叾鎿嶄綔鏂瑰紡綾諱技浜庢暟鎹粨鏋勪腑鐨勬爤銆?br>        鎴戜滑鏋勯犲璞★紝寰寰閮芥槸鍦ㄤ竴孌佃鍙ヤ綋涓紝姣斿鍑芥暟錛屽垽鏂紝寰幆錛岃繕鏈夊氨鐩存帴琚竴瀵?#8220;{}”鍖呭惈鐨勮鍙ヤ綋銆傝繖涓璞″湪璇彞浣撲腑琚垱寤猴紝鍦ㄨ鍙ヤ綋緇撴潫鐨勬椂鍊欒閿姣併傞棶棰樺氨鍦ㄤ簬錛岃繖鏍風殑瀵硅薄鍦ㄧ敓鍛藉懆鏈熶腑鏄瓨鍦ㄤ簬鏍堜笂鐨勩備篃灝辨槸璇達紝濡備綍綆$悊錛屾槸緋葷粺瀹屾垚鑰岀▼搴忓憳涓嶈兘鎺у埗鐨勩傛墍浠ワ紝鍗充嬌鎴戜滑璋冪敤浜嗘瀽鏋勶紝鍦ㄥ璞$敓鍛藉懆鏈熺粨鏉熷悗錛岀郴緇熶粛鐒朵細鍐嶈皟鐢ㄤ竴嬈℃瀽鏋勫嚱鏁幫紝灝嗗叾鍦ㄦ爤涓婇攢姣侊紝瀹炵幇鐪熸鐨勬瀽鏋勩?br>        鎵浠ワ紝濡傛灉鎴戜滑鍦ㄦ瀽鏋勫嚱鏁頒腑鏈夋竻闄ゅ爢鏁版嵁鐨勮鍙ワ紝璋冪敤涓ゆ鎰忓懗鐫絎簩嬈′細璇曞浘娓呯悊宸茬粡琚竻鐞嗚繃浜嗙殑錛屾牴鏈笉鍐嶅瓨鍦ㄧ殑鏁版嵁錛佽繖鏄歡浼氬鑷磋繍琛屾椂閿欒鐨勯棶棰橈紝騫朵笖鍦ㄧ紪璇戠殑鏃跺欎笉浼氬憡璇変綘錛?br>鍦ㄧ綉涓婃壘鍒拌繖鍑犲彞璇濓紝璇村緱寰堝ソ鍟婏細<br><span style="COLOR: #666699">//鏄懼紡璋冪敤鐨勬椂鍊欙紝鏋愭瀯鍑芥暟鐩稿綋浜庣殑涓涓櫘閫氱殑鎴愬憳鍑芥暟<br>//緙栬瘧鍣ㄩ殣寮忚皟鐢ㄦ瀽鏋勫嚱鏁幫紝濡傚垎閰嶄簡瀵瑰唴瀛橈紝鏄懼紡璋冪敤鏋愭瀯鐨勮瘽寮曡搗閲嶅閲婃斁鍫嗗唴瀛樼殑寮傚父<br>//鎶婁竴涓璞$湅浣滃崰鐢ㄤ簡閮ㄥ垎鏍堝唴瀛橈紝鍗犵敤浜嗛儴鍒嗗爢鍐呭瓨錛堝鏋滅敵璇蜂簡鐨勮瘽錛夛紝榪欐牱渚夸簬鐞嗚В榪欎釜闂<br>//緋葷粺闅愬紡璋冪敤鏋愭瀯鍑芥暟鐨勬椂鍊欙紝浼氬姞鍏ラ噴鏀炬爤鍐呭瓨鐨勫姩浣滐紙鑰屽爢鍐呭瓨鍒欑敱鐢ㄦ埛鎵嬪伐鐨勯噴鏀撅級<br>//鐢ㄦ埛鏄懼紡璋冪敤鏋愭瀯鍑芥暟鐨勬椂鍊欙紝鍙槸鍗曠函鎵ц鏋愭瀯鍑芥暟鍐呯殑璇彞錛屼笉浼氶噴鏀炬爤鍐呭瓨錛屾懅姣佸璞?/span><br>        緋葷粺鍦ㄤ粈涔堟儏鍐典笅涓嶄細鑷姩璋冪敤鏋愭瀯鍑芥暟鍛紵鏄劇劧錛屽鏋滃璞¤寤虹珛鍦ㄥ爢涓婏紝緋葷粺灝變笉浼氳嚜鍔ㄨ皟鐢ㄣ備竴涓父瑙佺殑渚嬪瓙鏄痭ew...delete緇勫悎銆備絾鏄ソ鍦ㄨ皟鐢╠elete鐨勬椂鍊欙紝鏋愭瀯鍑芥暟榪樻槸琚嚜鍔ㄨ皟鐢ㄤ簡銆傚緢緗曡鐨勪緥澶栧湪浜庝嬌鐢ㄥ竷灞new鐨勬椂鍊欙紝鍦╠elete璁劇疆鐨勭紦瀛樹箣鍓嶏紝闇瑕佹樉寮忚皟鐢ㄧ殑鏋愭瀯鍑芥暟錛岃繖瀹炲湪鏄緢灝戣鐨勬儏鍐點?br>        鎵浠ワ紝緇撹鏄紝涓鑸笉瑕佽嚜浣滆仾鏄庣殑鍘昏皟鐢ㄦ瀽鏋勫嚱鏁般傛垨鑰呰鏄綘涓嶅珜楹葷儲鐨勮瘽錛屾瀽鏋勪箣鍓嶆渶濂藉厛鐪嬬湅鍫嗕笂鐨勬暟鎹槸涓嶆槸宸茬粡琚噴鏀捐繃浜嗐傛斁鍑轟竴涓紨紺虹殑渚嬪瓙錛屽ぇ瀹跺彲浠ュ弬鑰冧竴涓嬪搱銆?/p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">#ifndef A_HPP<br></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000"> A_HPP</span><span style="COLOR: #000000"><br><br>#include </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000"> std;<br><br></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> A<br>{<br></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br>    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> a;<br>    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> temp;<br>    </span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000"> heap_deleted;<br></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br>    A(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> _a);<br>    A(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> A</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> _a);<br>    </span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">A();<br>    </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> change(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> x);<br>    </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> show() </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">;<br>};<br><br></span><span style="COLOR: #0000ff">#endif</span><span style="COLOR: #000000"><br></span></div> <p><br> </p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">a.hpp</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><br>A::A(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> _a): heap_deleted(</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">)<br>{<br>    temp </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">;<br>    </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">temp </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> _a;<br>    a </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">temp;<br>    cout</span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">A Constructor!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> endl; <br>}<br><br>A::A(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> A</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> _a): heap_deleted(<span style="COLOR: #0000ff">false</span>)<br>{<br>    temp </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">;<br>    </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">temp </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> _a.a;<br>    a </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">temp;<br>    cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">A Copy Constructor</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> endl;<br>}<br><br>A::</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">A()<br>{<br>    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> ( heap_deleted </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">){<br>        cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">temp at: </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> temp </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> endl;<br>        delete temp;<br>        heap_deleted </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br>        cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Heap Deleted!\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>    }<br>    </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"> {<br>        cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Heap  already Deleted!\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>    }<br><br>    cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">A Destroyed!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> endl; <br>}<br><br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> A::change(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> x)<br>{<br>    a </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> x;<br>}<br><br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> A::show() </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"><br>{<br>    cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">a = </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> a </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> endl;<br>}</span></div> <br> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">a.hpp</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> argc, </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> argv[])<br>{<br><br>    A a(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br>    a.</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">A();<br>    a.show();<br>    cout </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">main() end\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>    a.change(</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">);<br>    a.show();<br><br>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}</span></div> <img src ="http://www.shnenglu.com/lf426/aggbug/46909.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/lf426/" target="_blank">lf426</a> 2008-04-12 14:29 <a href="http://www.shnenglu.com/lf426/archive/2008/04/12/46909.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>SDL鍏ラ棬鏁欑▼錛堜節(jié)錛夛細4銆乮nt杞崲涓簊td::stringhttp://www.shnenglu.com/lf426/archive/2008/03/26/45459.htmllf426lf426Wed, 26 Mar 2008 12:48:00 GMThttp://www.shnenglu.com/lf426/archive/2008/03/26/45459.htmlhttp://www.shnenglu.com/lf426/comments/45459.htmlhttp://www.shnenglu.com/lf426/archive/2008/03/26/45459.html#Feedback6http://www.shnenglu.com/lf426/comments/commentRss/45459.htmlhttp://www.shnenglu.com/lf426/services/trackbacks/45459.html
        鎴戜笅闈㈣冭檻鐨勯棶棰橈紝鏄敤TextSurface鍙嶉榧犳爣浜嬩歡鐨勪俊鎭傛垜鎯沖埌鐨勭涓涓緥瀛愶紝寰堣嚜鐒跺氨鏄弽棣堥紶鏍囨墍鍦ㄥ潗鏍囩殑浣嶇疆銆傝繖閲屾秹鍙婂埌涓涓熀紜鐨勯棶棰橈紝鍗抽紶鏍囦綅緗樉鐒朵笉鏄敤瀛楃涓茶〃紺虹殑銆係DL緇欐垜浠殑鍙嶉淇℃伅鏄痠nt錛屾垜浠渶瑕佺敤TextSurface灝唅nt鏋勫緩鎴愬彲浠ヨblit鍒癝creenSurface涓婄殑闈紝闇瑕佸仛鐨勭涓浠朵簨鎯咃紝鏄皢int杞崲涓簊tring銆?br>        鎴戠殑鎬濊礬鏄繖鏍風殑錛氶鍏堟壘鍒癷nt鐨勬暟浣嶆暟錛涚劧鍚庝緷嬈′粠楂樹綅璇誨彇鏁板瓧錛屼箣鍚庡皢榪欎釜浣嶅幓鎺夛紙閫氬父鍑忔帀鏄渶綆鍗曠殑錛夛紱渚濇璁板綍榪欎簺鏁板瓧錛岃漿鎹㈡垚string錛岀劧鍚庡皢榪欎簺鏁板瓧“鍔?#8221;錛堝瓧絎︿覆鐨勫悎騫訛級璧鋒潵銆?br>澶存枃浠跺涓嬶細
//UVi Soft (2008)
//Long Fei (lf426), E-mail: zbln426@163.com

//FileName: int_to_string.h

#ifndef INT_TO_STRING_H_
#define INT_TO_STRING_H_

#include 
<iostream>
#include 
<string>
#include 
<vector>

int int_power(int baseint exp);
std::
string int_to_string(int num);

#endif
        鍏朵腑錛宨nt_to_string()鏄垜浠渶瑕佹瀯寤虹殑鍑芥暟錛宨nt_power()鏄眰涓涓暟鐨勬暣鏁板箓鐨勫嚱鏁般傝繖涔堢畝鍗曠殑綆楁硶錛屾垜浠氨鑷繁鍐欏惂銆傝嚦浜庣敤鍒皏ector錛屾寜鐓ф垜鐨勬濊礬錛屾垜浠渶瑕佺殑鏁版嵁緇撴瀯鏄劇劧搴旇鏄?#8220;闃熷垪”錛堝厛榪涘厛鍑猴級銆備笉榪囩湡寰楁劅璋TL錛岀敤vector鏄劇劧涓嶆槸鏈浼樺寲鐨勶紝浣嗘槸鑲畾鏄渶“閫氫織”鐨勶紝鍥犱負鍗充嬌鏄綔涓洪潪涓撲笟鐨勯槦鍒楋紙鎴栬呮爤錛夛紝vector涔熷凡緇忎負鎴戜滑鎻愪緵浜嗗繀瑕佺殑鏂規(guī)硶錛屾瘮濡傛帹鍏ワ紙push_back錛夈?br>        涓嬮潰鎴戝氨鎶婄▼搴忚鏄庡す鍦ㄧ▼搴忎腑闂翠簡銆傚師鍥犳槸鏈漢鑻辮澶彍錛岀畝鍗曟弿榪拌繕鑳藉繊錛屾弿榪扮畻娉曞氨鏈夌偣涓嶈兘蹇嶄簡-_-!!!銆傚彟澶栵紝灝界鎴戣嫳璇繖姘村鉤錛屾垜榪樻槸甯屾湜紼嬪簭閲岄潰鍒敤涓枃娉ㄩ噴鐨勫ソ銆傝繖縐嶄簨鎯咃紝鎮(zhèn)ㄨ榪囦竴嬈′貢鐮侊紝灝辨繪槸寰楁伓蹇冧竴杈堝瓙銆?br>
//UVi Soft (2008)
//Long Fei (lf426), E-mail: zbln426@163.com

#include 
"int_to_string.h"

int int_power(int baseint exp)
{
    
int result = 1;
    
for (int i = exp; i > 0; i-- )
        result
*=base;
    
return result;
}
榪欐槸涓緢綆鍗曠殑姹傚箓鐨勭畻娉曘傚叾瀹炴垜浠湪紼嬪簭涓紝鍙渶瑕佺敤鍒版眰10鐨刵嬈″箓錛屾墍浠ワ紝瀹為檯涓婃垜浠繕鍙互鍐欏緱鏇村姞鏈夐拡瀵逛竴鐐廣?br>
std::string int_to_string(int num)
{
    
bool negative = false;
    
if ( num < 0 ){
        negative 
= true;
        num 
= -num;
    }
榪欏紑濮嬪啓杞崲鍑芥暟浜嗐傞鍏堟垜浠垽瀹歩nt鏄惁涓鴻礋銆傚鏋滄槸錛屾垜浠妸瀹冨彉鎴愬叾鐩稿弽鏁幫紝鐒跺悗涓庢鏁頒竴鏍瘋漿鎹紝鏈鍚庡湪鍓嶉潰鍔犱笂“-”灝監(jiān)K浜嗐?br>
    int bitNum = 1;
    
for ( int i = num; i > 9; i/=10 )
        bitNum
++;
bitNum鏄繖涓猧nt鐨勬暟浣嶆暟銆傛瘮濡?灝辨槸1浣嶏紝1024灝辨槸4浣嶃?br>
    std::vector<int> eachNum;
    
for ( int i = bitNum, temp = num; i > 0; i-- ){
        
int highBit = int(temp/int_power(10, (i-1)));
        eachNum.push_back(highBit);
        temp
-=(highBit*int_power(10, (i-1)));
    }
鎴戜滑閫氳繃vector鏁扮粍綰綍姣忎釜鏁頒綅涓婄殑鏁板瓧錛屼粠楂樹綅鍒頒綆浣嶃傞渶瑕佽鏄庣殑鏄紝n浣嶇殑鏁板瓧鏄?0鐨刵-1嬈℃柟騫傘傛瘮濡?024鏄?浣嶏紝鑰?000鏄?0鐨?嬈℃柟騫傘傛墍浠ワ紝鎴戜滑榪欓噷鐢ㄧ殑鏄痠-1鑰岄潪i銆?br>
    std::string str;
    
if ( negative == true )
        str 
= "-";
    
for ( std::vector<int>::iterator pTemp = eachNum.begin(); pTemp != eachNum.end(); pTemp++ ){
        
switch ( *pTemp ){
            
case 0:
                str
+="0";
                
break;
            
case 1:
                str
+="1";
                
break;
            
case 2:
                str
+="2";
                
break;
            
case 3:
                str
+="3";
                
break;
            
case 4:
                str
+="4";
                
break;
            
case 5:
                str
+="5";
                
break;
            
case 6:
                str
+="6";
                
break;
            
case 7:
                str
+="7";
                
break;
            
case 8:
                str
+="8";
                
break;
            
case 9:
                str
+="9";
                
break;
            
default:
                
break;
        }
    }
    
return str;
}
鏈鍚庯紝鎴戜滑鐢ㄤ簡STL鐨勬柟娉曞皢姣忎釜鏁板瓧杞崲鎴恠td::string鐨勫瓧絎︿覆錛岀劧鍚庡皢榪欎簺瀛楃涓插悎騫惰搗鏉ワ紝浣滀負鍑芥暟鐨勮繑鍥炲箋?br>        鎴戜滑鍦ㄤ笅涓鑺備腑灝嗙敤TextSurface婕旂ず榪欎釜鍑芥暟鐨勪綔鐢紝浠ュ強瀹炵幇鎴戜滑鍦ㄦ湰鑺傚墠闈㈡墍鎻愬嚭鐨勯棶棰樸?

lf426 2008-03-26 20:48 鍙戣〃璇勮
]]>
浠庘滈泦鍚堚濆疄渚嬪垎鏋愪慨楗板嚱鏁拌繑鍥炲肩殑const浣滅敤http://www.shnenglu.com/lf426/archive/2008/03/13/44360.htmllf426lf426Thu, 13 Mar 2008 05:30:00 GMThttp://www.shnenglu.com/lf426/archive/2008/03/13/44360.htmlhttp://www.shnenglu.com/lf426/comments/44360.htmlhttp://www.shnenglu.com/lf426/archive/2008/03/13/44360.html#Feedback3http://www.shnenglu.com/lf426/comments/commentRss/44360.htmlhttp://www.shnenglu.com/lf426/services/trackbacks/44360.html        鍙戠幇榪欎釜闂錛屾槸鍥犱負涓鐩翠互鏉ユ濊冪殑涓涓畻娉曗斺斿叧浜?#8220;闆嗗悎”鐨勫疄鐜般傝繖涓泦鍚堝氨鏄暟瀛︿腑鐨勯泦鍚堬紝涓庤綆楁満涓暟鍒椾竴涓渶澶х殑涓嶅悓鍦ㄤ簬錛岄泦鍚堢殑鍏冪礌鏄簰寮傜殑銆傚洜涓鴻繖涓ゅぉ鍦ㄧ啛鎮(zhèn)塿ector錛屾墍浠ヨ寰楃敤vector瀹炵幇闆嗗悎鍐嶅悎閫備笉榪囦簡銆係TL紜疄鏄緢濂藉緢寮哄ぇ鐨勪綋緋伙紝鏃犺鏄唴瀛樼鐞嗭紝榪樻槸閾捐〃鐨勫疄鐜幫紝璁╂垜浠彲浠ョ渷寰堝蹇冦傚叾瀹炲叧浜庝負浠涔堣瀹炵幇闆嗗悎錛屼篃鏄洜涓烘垜鍦ㄨ鍒掑疄鐜扮被浼艱嫳闆勬棤鏁屾垬鍦鴻綆楃Щ鍔ㄧ殑涓緋誨垪綆楁硶涓紝寰堝鍦版柟浼氱敤鍒伴泦鍚堢殑姒傚康錛岀敋鑷沖寘鎷茍闆嗗拰宸泦絳夌瓑銆備篃璁告垜鎯沖埌鐨勭畻娉曟槸寰堢鎷欑殑錛屼絾鏄湪鎴戣繕娌℃湁瀹屽叏闃呰鐩稿叧鐨勫凡鏈変唬鐮佷箣鍓嶏紝瑙夊緱瀹屽叏鍑嚜宸辯殑璁よ瘑錛屽疄鐜拌繖浜涚畻娉曡繕鏄緢鏈夋剰涔夌殑錛屾墍浠ワ紝浠庡涔燙++鐨勭涓澶╁紑濮嬶紝鎴戝氨鍦ㄨ瘯鍥炬壘鍒拌В鍐寵繖浜涢棶棰樼殑鏂規(guī)硶錛岃岀幇鍦紝瓚婃潵瓚婃竻鏅頒簡錛屽懙鍛點?br>        鎴戠殑鎬濊礬寰堢洿鎺ヤ篃寰堢畝鍗曪紝灝辨槸鎶婁竴涓暟緇勪腑鐨勫厓绱犲線涓涓柊鐨勬暟緇勪腑濉紝鏂板~鍏呯殑鍏冪礌浼氶亶鍘嗘柊鏁扮粍涓凡鏈夌殑鍏冪礌錛屽鏋滀笌涔嬩簰寮傦紝鍒欏~鍏ワ紙push錛夛紝鍚﹀垯灝辮煩鍒頒笅涓涓備互涓婂氨宸茬粡紜珛浜嗘垚鍛樻暟鎹紙縐佹湁錛夊拰鏋勯犲嚱鏁般傚洜涓烘垜浠渶瑕?#8220;闆嗗悎鍖?#8221;浜嗙殑鏁扮粍鏄彲浠ヨ澶栭儴璁塊棶鐨勶紝鎵浠ヤ竴涓渶綆鍗曠殑鏂規(guī)硶灝辨槸鎶婃垚鍛樻暟鎹叕鏈夆斺旇繖紜疄鏄緢綆鍗曪紝鑰屼笖榪欐牱灝變笉浼氬嚭鐜頒粖澶╂垜浠璁ㄨ鐨勯棶棰樹簡錛涘彟澶栦竴涓鍔炴硶鏄敤涓涓叕鏈夋柟娉曪紝榪斿洖鎴愬憳鏁版嵁鐨勫尖斺旀垜灝辨槸榪欎箞鍋氱殑錛屽洜涓鴻繖璨屼技鏇寸鍚圤OP鐨?#8220;鏁版嵁闅愯棌”鐨勭簿紲?_-!!!銆傚緢蹇彲浠ュ啓鍑哄ご鏂囦歡錛?br>
#ifndef AGGREGATE_H_
#define AGGREGATE_H_

#include 
<iostream>
#include 
<vector>
#include 
<algorithm>

class Aggregate
{
private:
    std::vector
<int> agg;
public:
    Aggregate(std::vector
<int>& temp);
    
const std::vector<int> getAgg() const;
};

#endif
璇鋒敞鎰忛偅涓孩鑹茬殑const錛屽叾瀹炴垜鎯寵鐨勬槸錛岀涓嬈″啓榪欎釜紼嬪簭鐨勬椂鍊欙紝鎴戝茍娌℃湁榪欎釜const銆備竴鐩翠互鏉ワ紝闄や簡鍦ㄩ噸杞?#8220;=”鐨勬椂鍊欐垜澶ф娓呮淇グ榪斿洖鍊糲onst鐨勪綔鐢ㄦ槸鍙互閬垮厤璁╄繑鍥炲煎仛宸﹀鹼紝鍏朵粬鏃跺欒繕鐪熶笉澶槑鐧借繖涓猚onst鐨勪綔鐢紝鍙槸鏈潃C++鐨勭簿紲炩斺旇兘const灝眂onst鍚?_-!!!銆傚疄鐜版枃浠訛細
#include "aggregate.h"

Aggregate::Aggregate(std::vector
<int>& temp)
{
    
for ( std::vector<int>::iterator pTemp = temp.begin(); pTemp != temp.end(); pTemp++ ) {
        
bool findSame = false;
        
for ( std::vector<int>::iterator pAgg = agg.begin(); pAgg != agg.end(); pAgg++ )
            
if ( *pTemp == *pAgg )
                findSame 
= true;
        
if ( findSame == false )
            agg.push_back(
*pTemp);
    }
}

const std::vector<int> Aggregate::getAgg() const
{
    
return agg;
}
涓鍒囬兘寰堝畬緹庯紝涓嶆槸鍚楋紵欏烘墜灝辯戶緇啓鍑轟竴涓祴璇曠敤鐨勭▼搴忥細
#include "aggregate.h"

void show(int& i);

int main(int argc, char* argv[])
{
    std::vector<int> tempArray;
    int temp;
    bool goon = true;

    while ( goon == true ) {
        std::cout << "#" << tempArray.size()+1 << "= ";
        std::cin >> temp;
        if ( temp == -1 ) {
            goon = false;
            continue;
        }
        tempArray.push_back(temp);
    }

    std::cout << "You've entered " << tempArray.size() << " numbers." << std::endl;

    for_each(tempArray.begin(), tempArray.end(), show);

    std::cout << "----------------------------\n" << "Now, to be aggregate\n";

    Aggregate tempAgg (tempArray);
    std::cout << "There are " << tempAgg.getAgg().size() << " different numbers.\n";
    for_each(tempAgg.getAgg().begin(), tempAgg.getAgg().end(), show);


    return 0;
}

void show(int& i)
{
    std::cout << i << std::endl;
}
寰堜笉騫革紝緙栬瘧姝e父鐨勯氳繃浜嗭紙娉ㄦ剰錛屾病鏈夌孩鑹茬殑const鐨勬椂鍊欙級銆?br>浣嗘槸錛岃繍琛屾椂鍑虹幇浜嗛敊璇?br>榪愯鏃墮敊璇槸浠朵護浜哄緢閮侀椃鐨勪簨鎯咃紝鍥犱負榪欐剰鍛崇潃緙栬瘧鍣ㄤ笉浼氬府浣犳壘鍒板嚭閿欑殑鍦版柟銆?br>騫歌繍鐨勬槸錛岀洿瑙夎鎴戣寰楃被浼紅empAgg.getAgg().begin()鐨勭敤娉曟湁闂錛屾墍浠ワ紝鎴戞敼鎴愪簡錛氾紙绱壊閭i儴鍒嗕唬鐮侊級
    std::cout << "----------------------------\n" << "Now, to be aggregate\n";

    Aggregate tempAgg (tempArray);
    std::vector
<int> tempAggArray = tempAgg.getAgg();
    std::cout 
<< "There are " << tempAggArray.size() << " different numbers.\n";
    for_each(tempAggArray.begin(), tempAggArray.end(), show);
榪欐牱錛岄棶棰樻槸瑙e喅浜嗐備絾鏄垜浠洖澶村垎鏋愪竴涓嬶紝鍒氭墠鐨勯棶棰樺埌搴曞嚭鍦ㄤ粈涔堝湴鏂瑰憿錛?br>鍏跺疄錛屽鏋滄垜浠姞涓婄孩鑹茬殑const錛屼嬌鐢ㄥ師鏉ョ殑浠g爜榪涜緙栬瘧鐨勬椂鍊欙紝緙栬瘧鍣ㄦ槸鍙互鎸囧嚭鎴戜滑鐨勯敊璇殑錛岀‘瀹炴槸tempAgg.getAgg().begin()鐨勭敤娉曞嚭浜嗛棶棰樸傚叿浣撶殑鍘熷洜鍖呭惈鍦?lt;algorithm>閲岄潰錛屾垜娌℃湁浠旂粏鍘誨垎鏋愶紝浣嗘槸鎴戜滑鑷沖皯鏄庣櫧浜嗭紝鏂規(guī)硶begin()浼氳瘯鍥句慨鏀瑰叾瀵硅薄鐨勮繑鍥炲鹼紒
        璁╅敊璇鍙戠幇鍦ㄧ紪璇戦樁孌碉紝榪滆繙濂戒簬琚彂鐜板湪榪愯鏃墮樁孌點傛垜鎯籌紝榪欏氨鏄疌++涓璫onst鏈澶х殑浣滅敤銆傛墍浠ワ紝鎬葷粨璧鋒潵榪樻槸C++鐨勪竴鍙ヨ瘽錛岃兘const錛屽氨const鍚с?)

lf426 2008-03-13 13:30 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久久青草大香线综合精品| 久久男女视频| 91久久一区二区| 久久一综合视频| 亚洲另类黄色| 正在播放亚洲一区| 国产精品综合av一区二区国产馆| 欧美影院在线| 性感少妇一区| 亚洲成人在线| 日韩午夜在线观看视频| 欧美色中文字幕| 欧美在线亚洲在线| 美女亚洲精品| 亚洲一区三区电影在线观看| 午夜欧美大尺度福利影院在线看| 狠狠狠色丁香婷婷综合久久五月 | 亚洲国产婷婷香蕉久久久久久99 | 先锋资源久久| 久久伊伊香蕉| 亚洲一区二区在| 久久成人国产精品| 一本色道久久综合亚洲精品高清| 一区二区av在线| 伊人激情综合| 一区二区激情视频| 欧美破处大片在线视频| 欧美~级网站不卡| 悠悠资源网久久精品| 亚洲剧情一区二区| 国户精品久久久久久久久久久不卡| 欧美激情精品| 国产性天天综合网| 日韩视频中文字幕| 亚洲成在人线av| 亚洲视频在线一区观看| 亚洲精品久久久久久久久| 亚洲欧美日韩综合国产aⅴ| 亚洲美女视频在线观看| 久久九九精品| 午夜久久一区| 欧美视频亚洲视频| 亚洲国产精品一区二区www在线| 国产精品羞羞答答xxdd| 亚洲毛片av| 亚洲精品国精品久久99热一| 久久av资源网站| 欧美一区二区在线看| 欧美特黄一级| 亚洲美女电影在线| 99精品欧美一区二区蜜桃免费| 久久久久国产精品一区二区| 欧美在线一级视频| 国产精品久线观看视频| 日韩视频在线你懂得| 日韩视频免费观看高清在线视频 | 久久久久91| 久久精品国产亚洲精品| 国产精品日日做人人爱| 一区二区三区 在线观看视频| 亚洲老司机av| 欧美精品免费播放| 亚洲精品免费看| 亚洲剧情一区二区| 欧美日韩高清在线播放| 亚洲精品视频在线看| 亚洲美女精品久久| 欧美日韩一区二区高清| 亚洲精品无人区| 一区二区三区日韩欧美| 欧美日韩中文字幕日韩欧美| 日韩一本二本av| 亚洲一区二区黄色| 国产精品美女主播在线观看纯欲| 亚洲夜间福利| 欧美中文字幕在线视频| 国产亚洲欧美中文| 久久伊人精品天天| 亚洲日本电影在线| 亚洲欧美日韩综合| 国产亚洲欧美一级| 久久综合伊人77777蜜臀| 亚洲国内欧美| 亚洲欧美成人一区二区在线电影| 国产精品第一页第二页第三页| 亚洲免费伊人电影在线观看av| 欧美在线看片| 亚洲黄一区二区三区| 欧美视频1区| 欧美在线关看| 亚洲人屁股眼子交8| 亚洲欧美日韩天堂| 欧美色欧美亚洲另类二区| 欧美在线高清| 国产精品久久久久久久9999| 欧美一区亚洲二区| 亚洲国产一区二区三区青草影视| 亚洲午夜一区二区| 狠狠色丁香久久婷婷综合丁香 | 亚洲一区二区三区视频播放| 久久综合久色欧美综合狠狠 | 午夜精品福利电影| 好吊日精品视频| 欧美日韩另类在线| 欧美自拍偷拍午夜视频| 亚洲精品午夜| 免费成人毛片| 香蕉久久一区二区不卡无毒影院 | 美女黄网久久| 亚洲免费在线电影| 91久久综合亚洲鲁鲁五月天| 国产精品久久久久久久久久免费看 | 亚洲字幕一区二区| 亚洲福利专区| 久久亚洲欧洲| 亚洲一区国产精品| 亚洲精品国产拍免费91在线| 韩日视频一区| 国产九区一区在线| 欧美日本在线播放| 麻豆乱码国产一区二区三区| 香蕉久久精品日日躁夜夜躁| 日韩亚洲综合在线| 亚洲激情女人| 欧美va亚洲va国产综合| 久久精品二区| 亚洲影院免费| 中文国产一区| 99视频精品在线| 亚洲精品免费一区二区三区| 黄色免费成人| 狠狠干狠狠久久| 国产亚洲亚洲| 国产乱码精品一区二区三区五月婷| 欧美国产免费| 开心色5月久久精品| 久久日韩粉嫩一区二区三区| 久久福利影视| 久久精品一二三区| 久久国产精品一区二区| 欧美综合第一页| 欧美中文字幕久久| 久久精品三级| 久久免费视频观看| 久久躁日日躁aaaaxxxx| 久久一区二区三区四区| 噜噜噜噜噜久久久久久91 | 久久久久久久久久久成人| 欧美一区二区在线免费观看| 午夜免费电影一区在线观看| 性做久久久久久| 国产精品成人aaaaa网站| 欧美日本韩国| 欧美午夜不卡视频| 国产精品日韩精品| 国语精品一区| 亚洲国产精品成人va在线观看| 亚洲高清一区二区三区| 亚洲伦理在线免费看| 亚洲天堂av电影| 欧美一区日本一区韩国一区| 久久黄色小说| 欧美国产日韩a欧美在线观看| 亚洲国产mv| 亚洲视频精品| 久久久久久久综合狠狠综合| 久久影院亚洲| 欧美日韩中文字幕在线视频| 国产欧美日韩亚洲精品| 在线日韩日本国产亚洲| 99国产精品国产精品久久| 性做久久久久久免费观看欧美| 欧美一区2区视频在线观看| 久久亚洲精品网站| 日韩亚洲欧美成人一区| 欧美一区不卡| 欧美顶级艳妇交换群宴| 国产精品久久久久91| 伊人久久大香线蕉综合热线| 在线一区欧美| 久久久免费av| 一本久道久久久| 久久精品日韩一区二区三区| 欧美日韩国产在线| 国产亚洲欧洲一区高清在线观看| 亚洲黄色精品| 欧美在线高清| 日韩视频―中文字幕| 久久影院午夜论| 国产日韩综合| 亚洲午夜电影在线观看| 欧美不卡一区| 亚洲欧美资源在线| 欧美日韩大陆在线| 亚洲大胆av| 久久综合伊人77777蜜臀| 在线亚洲伦理| 欧美精品在线观看| 亚洲第一狼人社区| 久久久久国产精品www|