锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
涓轟簡淇冭繘鍚勯儴闂ㄥ憳宸ョ殑浜ゆ祦錛岀櫨搴︿婦鍔炰簡涓鍦哄叏鍏徃鑼冨洿鍐呯殑鈥滄嫵鐨団濓紙鐧懼害鍐呴儴鏈嫻佽鐨勬牸鏂楁父鎴忥級鍙嬭皧璧涳紝璐熻矗緇勭粐榪欏満姣旇禌鐨勬槸鐧懼害鐨勮秴綰р滄嫵鐨団濊糠W.Z銆俉.Z涓嶆兂鐢ㄤ紶緇熺殑娣樻卑璧涙垨鑰呭驚鐜禌鐨勬柟寮忥紝鑰屾槸鑷繁鍒跺畾浜嗕竴涓瘮璧涜鍒欍?
鐢變簬涓浜涘憳宸ワ紙姣斿鍚岄儴闂ㄦ垨鑰呯浉閭婚儴闂ㄥ憳宸ワ級騫蟲椂鎺ヨЕ鐨勬満浼氭瘮杈冨錛屼負浜嗕績榪涗笉鍚岄儴闂ㄤ箣闂寸殑浜ゆ祦錛學.Z甯屾湜鍛樺伐鑷敱鍒嗙粍銆備笉鍚岀粍涔嬮棿鐨勬瘡涓や釜浜洪兘浼氳繘琛屼竴鍦哄弸璋婅禌鑰屽悓涓緇勫唴鐨勪漢涔嬮棿涓嶄細鎵撲換浣曟瘮璧涖?
姣斿4涓漢錛岀紪鍙蜂負1~4,濡傛灉鍒嗕負涓や釜緇勫茍涓?錛?涓涓粍錛?錛?涓涓粍錛岄偅涔堜竴鍏遍渶瑕佹墦鍥涘満姣旇禌錛? vs 3錛? vs 4錛? vs 3錛? vs 4銆?鑰屽
鏋滄槸1錛?錛?涓緇勶紝4鍗曠嫭涓緇勶紝閭d箞涓鍏遍渶瑕佹墦涓夊満姣旇禌 1 vs 4錛? vs 4錛? vs 4銆?
寰堝揩W.Z鎰忚瘑鍒幫紝榪欐牱鐨勬瘮璧涜鍒欏彲鑳戒細璁╂瘮璧涚殑鍦烘暟闈炲父澶氥俉.Z鎯崇煡閬撳鏋滄湁N涓漢錛岄氳繃涓婇潰榪欑姣旇禌瑙勫垯錛屾繪瘮璧涘満鏁版湁鍙兘涓篕鍦哄悧錛?
姣斿3涓漢錛屽鏋滃彧鍒嗗埌涓緇勫垯涓嶉渶瑕佹瘮璧涳紝濡傛灉鍒嗗埌涓ょ粍鍒欓渶瑕?鍦烘瘮璧?nbsp; 闃呰鍏ㄦ枃
]]>
鐧懼害鐨勫伐紼嬪笀浠槸闈炲父娉ㄩ噸鏁堢巼鐨勶紝鍦ㄩ暱鏈熺殑寮鍙戜笌嫻嬭瘯榪囩▼涓紝浠栦滑閫愭笎鍒涢犱簡涓濂楃嫭鐗圭殑緙╃暐璇備粬浠湪騫蟲椂鐨勪氦璋堛佷細璁紝鐢氳嚦鍦ㄥ悇縐嶆妧鏈枃妗d腑閮戒細澶ч噺榪愮敤銆?
涓轟簡璁╂柊鍛樺伐鍙互鏇村揩鍦伴傚簲鐧懼害鐨勬枃鍖栵紝鏇村ソ鍦伴槄璇誨叕鍙哥殑鎶鏈枃妗o紝浜哄姏璧勬簮閮ㄥ喅瀹氬紑鍙戜竴濂椾笓鐢ㄧ殑緲昏瘧緋葷粺錛屾妸鐩稿叧鏂囨。涓殑緙╃暐璇拰涓撴湁鍚嶈瘝緲昏瘧鎴愭棩甯歌璦銆?
杈撳叆瑕佹眰錛?
杈撳叆鏁版嵁鍖呭惈涓夐儴鍒嗭細
1. 絎竴琛屽寘鍚竴涓暣鏁癗(N<=10000)錛岃〃紺烘誨叡鏈夊灝戜釜緙╃暐璇殑璇嶆潯錛?
2. 绱ф帴鐫鏈塏琛岀殑杈撳叆錛屾瘡琛屽寘鍚袱涓瓧絎︿覆錛屼互絀烘牸闅斿紑銆傜涓涓瓧絎︿覆涓虹緝鐣ヨ錛堜粎鍖呭惈澶у啓鑻辨枃瀛楃錛岄暱搴︿笉瓚呰繃10瀛楄妭錛夛紝絎簩涓瓧絎︿覆涓烘棩甯歌璦錛堜笉鍖呭惈絀烘牸錛岄暱搴︿笉瓚呰繃255瀛楄妭錛夛紱
3. 浠庣N+2寮濮嬪埌杈撳叆緇撴潫涓哄寘鍚緝鐣ヨ鐨勭浉鍏蟲枃妗o紙鎬婚暱搴︿笉瓚呰繃1000000涓瓧鑺傦級銆備緥錛?
6
PS 闂ㄦ埛鎼滅儲閮?
NLP 鑷劧璇█澶勭悊
PM 浜у搧甯傚満閮?
HR 浜哄姏璧勬簮閮?
PMD 浜у搧鎺ㄥ箍閮?
M 闃呰鍏ㄦ枃
]]>
]]>
]]>
]]>
聽聽 1. 緗戠粶搴?VC2005娉ㄦ剰
聽聽 2. 鍚屾Timer
聽聽 3. 寮傛Timer
聽聽 4. 鍥炶皟鍑芥暟鐨勫弬鏁?br />聽聽 5. 鎴愬憳鍑芥暟浣滀負鍥炶皟鍑芥暟
聽聽 6. 澶氱嚎紼嬪洖璋冨悓姝?br />
鏂囩珷瑙?a target="blank">
http://wiki.woodpecker.org.cn/moin/Boost
鏂囩珷鏄敤wiki鍐欑殑錛屾湁涓嶅Ε澶у鍙互鐩存帴鏀規錛岃阿璋€?img src ="http://m.shnenglu.com/zuroc/aggbug/13850.html" width = "1" height = "1" />
]]>
鍘熸枃http://asio.sourceforge.net/boost_asio_0_3_7/libs/asio/doc/
緲昏瘧:寮犳矆楣?http://blog.csdn.net/zuroc or http://m.shnenglu.com/zuroc
Timer.1 - 鍚屾Timer
鏈珷浠嬬粛asio濡備綍鍦ㄥ畾鏃跺櫒涓婅繘琛岄樆濉炵瓑寰?blocking wait).
瀹炵幇,鎴戜滑鍖呭惈蹇呰鐨勫ご鏂囦歡.
鎵鏈夌殑asio綾誨彲浠ョ畝鍗曠殑閫氳繃include "asio.hpp"鏉ヨ皟鐢?
#include <iostream>
#include <boost/asio.hpp>
姝ゅ,榪欎釜紺轟緥鐢ㄥ埌浜唗imer,鎴戜滑榪樿鍖呭惈Boost.Date_Time鐨勫ご鏂囦歡鏉ユ帶鍒舵椂闂?
#include <boost/date_time/posix_time/posix_time.hpp>
浣跨敤asio鑷沖皯闇瑕佷竴涓猙oost::asio::io_service瀵硅薄.璇ョ被鎻愪緵浜嗚闂甀/O鐨勫姛鑳?鎴戜滑棣栧厛鍦╩ain鍑芥暟涓0鏄庡畠.
int main()
{
boost::asio::io_service io;
涓嬩竴姝ユ垜浠0鏄巄oost::asio::deadline_timer瀵硅薄.榪欎釜asio鐨勬牳蹇冪被鎻愪緵I/O鐨勫姛鑳?榪欓噷鏇寸‘鍒囩殑璇存槸瀹氭椂鍔熻兘),鎬繪槸鎶婁竴涓猧o_service瀵?/p>
璞′綔涓轟粬鐨勭涓涓瀯閫犲嚱鏁?鑰岀浜屼釜鏋勯犲嚱鏁扮殑鍙傛暟璁懼畾timer浼氬湪5縐掑悗鍒版椂(expired).
boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
榪欎釜綆鍗曠殑紺轟緥涓垜浠紨紺轟簡瀹氭椂鍣ㄤ笂鐨勪竴涓樆濉炵瓑寰?灝辨槸璇?璋冪敤boost::asio::deadline_timer::wait()鐨勫湪鍒涘緩鍚?縐掑唴(娉ㄦ剰:涓嶆槸絳夊緟
寮濮嬪悗),timer鍒版椂涔嬪墠涓嶄細榪斿洖浠諱綍鍊?
涓涓猟eadline_timer鍙湁涓ょ鐘舵?鍒版椂,鏈埌鏃?濡傛灉boost::asio::deadline_timer::wait()鍦ㄥ埌鏃剁殑timer涓婅皟鐢?浼氱珛鍗硆eturn.
t.wait();
鏈鍚?鎴戜滑杈撳嚭鐞嗘墍褰撶劧鐨?quot;Hello, world!"鏉ユ紨紺簍imer鍒版椂浜?
std::cout << "Hello, world!\n";
return 0;
}
瀹屾暣鐨勪唬鐮?
#include <iostream>
#include <boost/asio.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
int main()
{
boost::asio::io_service io;
boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
t.wait();
std::cout << "Hello, world!\n";
return 0;
}
緲昏瘧:寮犳矆楣?http://blog.csdn.net/zuroc or http://m.shnenglu.com/zuroc
Boost.Asio鏄埄鐢ㄥ綋浠++鐨勫厛榪涙柟娉?璺ㄥ鉤鍙?寮傛I/O妯″瀷鐨凜++緗戠粶搴?
鍏ラ棬
榪欎釜鏁欑▼浠嬬粛浜嗗鎴風-鏈嶅姟鍣ㄧ鐨勪竴浜涘熀鏈蹇?鍚屾椂緇欏嚭浜嗕竴涓ず渚嬬殑灝忕▼搴?
灝忕▼搴忓彲浠ュ惎紺築oost.Asio鍦ㄥ鏉傜▼搴忎腑鐨勫簲鐢?
闄勬敞
Boost.Asio鐨勫ぇ閮ㄥ垎鍔熻兘娌℃湁蹇呰緙栬瘧Boost涓殑鍏朵粬搴?浠呬粎闇瑕佸畠浠殑澶存枃浠?鐒惰宺ead_until鍜宎sync_read_until鐨勯噸杞介渶瑕丅oost.Regex搴?娉ㄦ剰:MSVC 鎴?Borland C++鐨勭敤鎴烽渶瑕佸湪鐢ㄦ埛璁劇疆涓姞鍏?DBOOST_ALL_NO_LIB鏉ラ槻姝笌Boost.Date_Time鍜孊oost.Regex鐨勮嚜鍔ㄩ摼鎺?
闇瑕丱penSSL鎵嶅彲浠ュ惎鐢⊿SL鏀寔,浣咥sio鐨勫叾浠栭儴鍒嗕笉闇瑕佸畠.
宸茬粡嫻嬭瘯鐨勫鉤鍙板拰緙栬瘧鍣?
* Win32 using Visual C++ 7.1 and Visual C++ 8.0.
* Win32 using Borland C++Builder 6 patch 4.
* Win32 using MinGW.
* Win32 using Cygwin. (__USE_W32_SOCKETS must be defined.)
* Linux (2.4 or 2.6 kernels) using g++ 3.3 or later.
* Solaris using g++ 3.3 or later.
* Mac OS X 10.4 using g++ 3.3 or later.
* QNX Neutrino 6.3 using g++ 3.3 or later.
鍘熺悊:
Boost.Asio鍙互璁╃▼搴忓憳鐢–++鐨勭▼搴忎綋緋誨彇浠i偅縐嶉渶瑕佷嬌鐢╯ystem搴曞眰鎿嶄綔鐨勭綉緇滅紪紼?鐗瑰埆鐨勫煎緱娉ㄦ剰鐨勬槸,Boost.Asio璇曞浘瑙e喅涓涓嬩竴浜涢棶棰?
*鍙Щ妞嶆?
搴撳彲浠ユ敮鎸佸茍鎻愪緵涓緋誨垪甯哥敤鎿嶄綔緋葷粺鐨勪竴鑷磋涓?
*鍙祴閲忔?
搴撳厑璁稿茍榧撳姳寮鍙戣呭湪緗戠粶緙栫▼涓嫻嬫垚鐧炬垨鎴愬崈騫跺彂鐨勮繛鎺ユ暟.搴撳湪鍚勪釜騫沖彴鐨勫疄鐜拌鐢ㄨ繖縐嶆満鍒舵潵鏈浼樼殑瀹炵幇榪欑鍙祴閲忔?
*鏁堢巼:
搴撹鏀寔 鍒嗘暎-鑱氬悎I/O(scatter-gather I/O) 涔嬬被鐨勬妧鏈?鍏佽鍗忚鐨?鏈灝忛噺(minimise) 鐨勬暟鎹氦鎹?
*浼厠鍒?Berkeley) sockets妯″瀷:
璇ユā鍨嬬殑API琚箍娉涚殑閲囩敤鍜岀悊瑙?琚澶氭枃鐚粙緇?鍏朵粬紼嬪簭璇█閫氬父浣跨敤綾諱技緗戠粶API鐨勬帴鍙?
*鏄撶敤:
闄嶄綆鏂版墜浣跨敤璇ュ伐鍏風殑鍏ラ棬闅滅,鑳滀簬妗嗘灦鍜屾ā寮?涔熷氨鏄,璇曞浘鏈綆鍖栧墠绔殑瀛︿範,浠呬粎闇瑕佺悊瑙d竴浜涘熀鏈鍒欏拰鎸囧鏂歸拡.姝ゅ,搴撶殑鐢ㄦ埛浠呴渶瑕佺悊瑙d嬌鐢ㄥ埌鐨勭壒瀹氬嚱鏁?
*鍙互浣滀負榪涗竴姝ユ娊璞$殑鍩虹:
搴撳簲璇ュ厑璁稿叾浠栧簱鐨勫紑鍙戣呰繘琛屾洿楂樺眰鐨勬娊璞?姣斿:瀹炵幇甯哥敤鐨勫崗璁瓾ttp.
灝界褰撳墠鐨凚oost.Asio鐨勫疄鐜頒富瑕佸叧娉ㄧ殑鏄綉緇?浣嗗紓姝/O鍙互琚墿灞曞埌鍏朵粬緋葷粺璧勬簮,姣斿 鏂囦歡.
鏂囨湯榪欑瘒Email鏄?006-03-22鐨?鑰屼粖澶╁凡緇?006-8-5鏃ヤ簡,鎴戠湅鍒癮sio鐨剆oureforge鐨勪富欏典笂璇?
20 June 2006 - asio version 0.3.7 (development) released.
This release includes major interface changes arising out of the Boost review of asio.
The asio library was accepted into Boost and will appear in a future Boost release.
涓嶈繃Boost release鍒扮幇鍦ㄨ繕鏄?/p>
boost 1.33.1 December 5, 2005.
asio涓嶇煡閬撹繕瑕佺瓑鍒頒粈涔堟椂鍊欐墠鍦˙oost release鏀懼嚭,鐪熸槸鏈涚┛縐嬫按鍟?
C++0x鏍囧噯涔熸槸榪欐牱,絳夊氨涓涓瓧.
鐢辨鑰岃,鍥藉C++紺懼尯鐪熸槸灝忓績璋ㄦ厧,紼沖畾絎竴,鍦ㄤ粬浠殑鐞嗗康涓瑿++鏇寸被浼間簬涓浠惰壓鏈搧.鍙嶈Java,.Net鐨勬棩鏂版湀寮?鍙互璇存槸鍔熻兘絎竴,鏂逛究絎簩,閫熷害絎笁.鍟嗕笟涓庡闄㈢殑鍖哄埆鐪熸槸涓嶈鯨鑷槑.
鑰屽湪鎴戠殑鐞嗗康涓?瀵逛簬闈㈠悜鏅氭闈㈢敤鎴?涓嶆槸涓撲笟/琛屼笟杞歡)鐨勭敱浜庡姛鑳界殑綾諱技(鍗充嬌浣犳湁涓涓緢鏈夊垱鎰忕殑杞歡,涓嶅嚭鍑犲ぉ灝變細鏈夎蔣浠剁殑緲葷増),鐣岄潰鍜岄熷害鍙兘灝辨槸鐢熷瓨鐨勫叧閿?瀵逛笌C++鐨凣ui榪欎竴鍧?鎴戞劅瑙夋槸鏋佺涓嶉傚簲(涔熻鏄垜姘村鉤澶樊),騫歌宖irefox鍜孏oogle鐨勪竴浜涘皬紼嬪簭鎻愪緵鏈変簡涓縐嶆柊鐨勭晫闈㈡濊礬:涓涓悗鍙版湇鍔?涓涓井鍨媤eb鏈嶅姟鍣?緗戦〉鐣岄潰.鍒╃敤Ajax鎶鏈彲浠ュ啓鍑哄緢濂界晫闈㈡潵(鎴戝啓浜嗕竴涓粯鍐欏崟璇嶈蔣浠剁綉欏電晫闈㈢殑璇曢獙鍝?鍏煎firefox鍜孖E6,涓嬭澆鍦板潃:
http://groups.google.com/group/go2program/browse_thread/thread/5ee588253b70df77
涓殑闄勪歡 source.rar
)
鎵鏈夊湪cpp@codingnow.com涓珮浜虹殑鎸囩偣涓嬫垜鐭ラ亾浜哸sio.浠庤屾湁浜嗕笂闈㈣繖浜涙劅鎱?
涓嬮潰鏄垜緲昏瘧鐨勫叧浜庡甯僡sio鎴愪負boost涓鍛樼殑Email,榪欐槸鎴戠涓嬈¢愬瓧閫愬彞鐨勭炕璇?姘村鉤鏈夐檺(6綰ф病榪?,鏈涘鎸囨暀.
鍘熸枃:Jeff Garland
緲昏瘧:寮犳矆楣?http://blog.csdn.net/zuroc or http://m.shnenglu.com/zuroc
澶у濂?
鎴戝緢楂樺叴鐨勫甯僡sio(娉?緗戠粶搴?姝e紡鎴愪負boost搴撶殑涓鍛?姝e鍏朵粬Boost搴撶殑瀹℃煡涓鏍?asio鐨勫鏌ヤ駭鐢熶簡璁稿鐨勮璁?瑙傜偣鍜屼簤杈?璇勪環褰掔粨浜庤禐緹?鍖呮嫭鍦ㄥ伐紼嬩腑鎴愬姛榪愮敤鐨勪緥瀛?涓ヨ們鐨?搴撶粨鏋?璁捐鏂歸潰鐨勬剰瑙?鍏鉤鐨勮,鍦ㄦ垜鐪嬫潵,asio鏄簡涓涓氱敤,鍙潬鐨勫簱,宸茬粡鍙互琚姞鍏oost搴?-鎻愪緵浜嗗紑鍙戣呭己鐑堣姹傜殑鍏抽敭棰嗗煙鐨勫簲鐢?
褰撶劧,涓濡傚線甯?asio榪樿皥涓嶄笂瀹岀編--涓嶅皯鍏抽敭鎬х殑闂榪欐瀹¤瘎騫舵病鏈夎冭檻.鍦ㄦ鎴戜粎鍒椾婦瀹¤瘎涓澶氱殑鎰忚涓殑涓閮ㄥ垎:
- 淇鍔ㄦ佸唴瀛樺垎閰嶇殑闂
- 鏇存敼鎺ュ彛浠ュ湪榪愯鏃秈pv4鍜宨pv6鐨勬棤緙濆垏鎹?br /> - 鏀硅繘浠ラ傚簲寮虹被鍨嬬殑socket鎺ュ彛(????浠涔堟剰鎬?璇烽珮鎵嬫寚鏁?
Chris宸茬粡鑾風煡浜嗗ぇ閲忓叧浜庡姩鎬佸唴瀛樺垎鐨勯厤瑙e喅鏂規,騫朵笖鎴戜細灝辨帴鍙e拰鍏朵粬鏂歸潰鐨勯棶棰樺湪Boost鐨勯偖浠跺垪琛ㄤ笂榪涜璺熻釜璁ㄨ浠ユ湡鑳藉敖鍠勫敖緹?
鍏朵粬鍙互浣滀負榪涗竴姝ュ寮洪噸瑕佺殑鏀硅繘鍖呮嫭:
- 灝藉彲鑳藉噺灝慶椋庢牸鐨勬帴鍙?br /> - 鍜宨ostream榪涗竴姝ョ殑鏁村悎
- 鎬ц兘浼樺寲
- 鏀硅繘鏂囨。(涓嶈鎴愪負Boost w/o this one //???鎬庝箞緲昏瘧)
Chris has a much longer list of changes garnered from the review and is well on his way to addressing many of them.
Chris鏈夌潃涓涓洿闀跨殑閽堝瀹¤瘎鎰忚鐨勬敼榪涜鍒掕〃,鍚屾椂浠栦笌寤鴻鑰呮湁鐫寰堝ソ鐨勮繛緇?
娉ㄦ剰,鏈夊嚑涓璁烘槸鍏充簬鎬ц兘鐨?榪欐槸asio鎵娑夊強棰嗗煙鐨勬牳蹇冮棶棰?鍏朵腑涓涓氨鏄笂闈㈡彁鍒扮殑鍔ㄦ佸唴瀛樺垎閰?涓鑸岃█,瀹¤瘎鑰呭姝ょ殑鏈熸湜寰堥珮.鐒惰?鍦ㄥ璇勮璁轟箣鍚?鍦ㄦ垜鐨勫嵃璞′腑璁稿寮鍙戣呭彂鐜癮sio鍙鏀硅繘鍐呭瓨鍒嗛厤,瀹冪殑琛ㄧ幇灝卞凡緇忚凍澶熻儨浠婚噸瑕佺殑宸ョ▼.(浣?鎴戝笇鏈汣hris鍦ㄥ紑鍙慳sio浣欎笅鐨勬椂闂撮噷,鍙互閲囩撼瀹¤瘎鑰呯殑涓浜涘叾浠栨柟闈㈢殑鎬ц兘鎰忚.
鍐嶄竴嬈℃垜涓築oost紺懼尯寤惰繜鍏竷瀹¤瘎緇撴灉鑰屾姳姝?榪欐鎺ㄨ繜瀹屽叏鏄敱浜庢垜鐨勬椂闂村畨鎺掗棶棰?涓巃sio鏃犲叧.鍐嶆鎰熻阿鎵鏈夌殑瀹¤瘎鑰呯殑璐$尞,灝ゅ叾鍚慍hris涓築oost娣誨姞asio鑰屼綔鍑虹殑宸ㄥぇ鍔姏鑷存暚.
鍘熸枃:
From: Jeff Garland
All -
I'm pleased to announce that asio has been accepted into Boost. As usual with a Boost review, the asio review generated plenty of discussion, issues, and controversy. Comments ranged from high praise,including success stories of projects in production, to serious design concerns and issues. On balance, in my judgment, asio provides a generally solid library that is ready for inclusion into the Boost library -- providing key functionality in an area that developers have a strong need.
Of course, like anything else, asio is not perfect -- a number of key issues were uncovered during the review. In terms of required changes I'm only going to cite a few:
- Fixes to dynamic memory allocation issues
- Interface changes to support ipv4 and ipv6 seamlessly at runtime
- Improvements to support strongly typed socket interfaces
Chris has communicated a couple possible solutions to the memory allocation issue and I'll ask that the interface and other changes for this issue continue to be discussed on the Boost list so consensus can be achieved on the best resolution.
Other key improvements that should be explored as future enhancements include:
- Possible removal of some of the c-style interfaces
- Exploration of higher level iostream integrations
- Performance improvements
- Improved documentation (wouldn't be Boost w/o this one)
Note that there were several threads and discussions about performance,which is particularly critical for the domain covered by asio. One of the performance issues is the dynamic memory allocation issue cited above. In general, the reviewers have extremely high expectations here. However, after reviewing the discussion and library it's my belief that
many developers will find asio performance sufficient to build significant projects with only the memory allocation changes. I expect Chris will be able to address some of the other performance issues cited by reviewers in asio over time.
Once again I'll apologize to the Boost community for the delay in the review results. The delay was entirely due to my own personal scheduling issues and should not reflect on asio in any way. Thanks again to all the reviewers for their effort and especially to Chris for his tremendous effort in bringing asio to Boost!
Jeff
# PROFILE can be set to YES to include profiling info, or NO otherwise
PROFILE聽聽聽聽聽聽聽 := NO
# TINYXML_USE_STL can be used to turn on STL support. NO, then STL
# will not be used. YES will include the STL files.(浣跨敤STL,閫夋嫨鐨勮瘽錛屽垯鍙互浣跨敤std::string)
TINYXML_USE_STL := YES
鍙﹀鍙互tinyxml_guide.zip鍙互涓嬭澆.
浠ヤ笅杞澆:
TinyXml瀛︿範絎旇
寮犲紱<zhangchi@china.com>
涓銆伮犅犅犅犅?TinyXml鐨勭壒鐐?
TinyXml鏄竴涓熀浜嶥OM妯″瀷鐨勩侀潪楠岃瘉鐨勮交閲忕駭C++瑙i噴鍣ㄣ?/p>
1.聽聽聽聽聽 SAX鍜孌OM
鐩墠XML鐨勮В鏋愪富瑕佹湁涓ゅぇ妯″瀷錛歋AX鍜孌OM銆?/p>
鍏朵腑SAX鏄熀浜庝簨浠剁殑錛屽叾鍩烘湰宸ヤ綔嫻佺▼鏄垎鏋怷ML鏂囨。錛屽綋鍙戠幇浜嗕竴涓柊鐨勫厓绱犳椂錛屼駭鐢熶竴涓搴斾簨浠訛紝騫惰皟鐢ㄧ浉搴旂殑鐢ㄦ埛澶勭悊鍑芥暟銆傝繖縐嶆柟寮忓崰鐢ㄥ唴瀛樺皯錛岄熷害蹇紝浣嗙敤鎴風▼搴忕浉搴斿緱浼氭瘮杈冨鏉傘?/p>
鑰孌OM錛堟枃妗e璞℃ā鍨嬶級錛屽垯鏄湪鍒嗘瀽鏃訛紝涓嬈℃х殑灝嗘暣涓猉ML鏂囨。榪涜鍒嗘瀽錛屽茍鍦ㄥ唴瀛樹腑褰㈡垚瀵瑰簲鐨勬爲緇撴瀯錛屽悓鏃訛紝鍚戠敤鎴鋒彁渚涗竴緋誨垪鐨勬帴鍙f潵璁塊棶鍜岀紪杈戣鏍戠粨鏋勩傝繖縐嶆柟寮忓崰鐢ㄥ唴瀛樺ぇ錛岄熷害寰寰鎱簬SAX錛屼絾鍙互緇欑敤鎴鋒彁渚涗竴涓潰鍚戝璞$殑璁塊棶鎺ュ彛錛屽鐢ㄦ埛鏇翠負鍙嬪ソ銆?/p>
2.聽聽聽聽聽 楠岃瘉鍜岄潪楠岃瘉
瀵逛簬涓涓壒瀹氱殑XML鏂囨。鑰岃█錛屽叾姝g‘鎬у垎涓轟袱涓眰嬈°傞鍏堟槸鍏舵牸寮忓簲璇ョ鍚圶ML鐨勫熀鏈牸寮忚姹傦紝姣斿絎竴琛岃鏈夊0鏄庯紝鏍囩鐨勫祵濂楀眰嬈″繀欏誨墠鍚庝竴鑷寸瓑絳夛紝絎﹀悎榪欎簺瑕佹眰鐨勬枃浠訛紝灝辨槸涓涓悎鏍肩殑XML鏂囦歡錛岀О浣渨ell-formatted銆備絾闄ゆ涔嬪錛屼竴涓猉ML鏂囨。鍥犲叾鍐呭鐨勪笉鍚岃繕蹇呴』鍦ㄨ涔変笂絎﹀悎鐩稿簲鐨勬爣鍑嗭紝榪欎簺鏍囧噯鐢辯浉搴旂殑DTD鏂囦歡鎴栬匰chema鏂囦歡鏉ュ畾涔夛紝絎﹀悎浜嗚繖浜涘畾涔夎姹傜殑XML鏂囦歡錛岀О浣渧alid銆?/p>
鍥犳錛岃В鏋愬櫒涔熷垎涓轟袱縐嶏紝涓縐嶆槸楠岃瘉鐨勶紝鍗充細璺熸嵁XML鏂囦歡涓殑澹版槑錛岀敤鐩稿簲鐨凞TD鏂囦歡瀵筙ML鏂囦歡榪涜鏍¢獙錛屾鏌ュ畠鏄惁婊¤凍DTD鏂囦歡鐨勮姹傘傚彟涓縐嶆槸蹇界暐DTD鏂囦歡錛屽彧瑕佸熀鏈牸寮忔紜紝灝卞彲浠ヨ繘琛岃В鏋愩?/p>
灝辨垜鎵鐭ワ紝楠岃瘉鐨勮В鏋愬櫒閫氬父閮芥槸姣旇緝閲嶉噺綰х殑銆俆inyXml涓嶆敮鎸侀獙璇侊紝浣嗘槸浣撶Н寰堝皬錛岀敤鍦ㄨВ鏋愭牸寮忚緝涓虹畝鍗曠殑XML鏂囦歡錛屾瘮濡傞厤緗枃浠舵椂錛岀壒鍒殑鍚堥傘?/p>
浜屻?TinyXml鐨勬瀯寤哄拰浣跨敤
1.聽聽聽聽聽 鑾峰彇
TinyXml棣栭〉鍦╤ttp://www.grinninglizard.com/tinyxml/index.html錛屼粠榪欓噷鍙互鎵懼埌鏈鏂扮増鏈殑婧愪唬鐮侊紝鐩墠鐨勭増鏈槸2.3.4銆?/p>
2.鏋勫緩
TinyXml鍦ㄦ瀯寤烘椂鍙互閫夋嫨鏄惁鏀寔STL錛岄夋嫨鐨勮瘽錛屽垯鍙互浣跨敤std::string錛屾墍浠ラ氬父搴旇鎵撳紑榪欎釜閫夐」銆?/p>
鍦╓indows涓婏紝TinyXml鐨勬簮鐮佸寘閲屾彁渚涗簡VC6鐨勫伐紼嬫枃浠訛紝鐩存帴鐢ㄥ畠灝卞彲浠ョ敓鎴愪袱涓潤鎬佸簱錛堝甫STL鍜屼笉甯TL錛夛紝闈炲父瀹規槗銆傚敮涓闇瑕佹敞鎰忕殑鏄紝榛樿鐢熸垚鐨勫簱鏄崟綰跨▼鐨勶紝濡傛灉鐢ㄥ湪澶氱嚎紼嬬殑欏圭洰涓紝闇瑕佹敼鍔ㄤ竴涓嬮厤緗紝鐢熸垚鐩稿簲鐨勫綰跨▼搴撱?/p>
鍦║nix騫沖彴涓婏紝TinyXml鐨勬簮鐮佸寘閲屽彧鎻愪緵浜嗕竴涓狹akefile錛屽浜庡吀鍨嬬殑Linux緋葷粺錛屾垨瑁呬簡gcc鍜実make鐨勫叾浠朥nix錛岃繖涓狹akefile瓚沖鐢ㄤ簡錛屾垜鍦≧H9鍜孯HEL4涓婃祴璇曪紝綆鍗曠殑make灝辨垚鍔熶簡銆傞渶瑕佹敞鎰忕殑鏈変互涓嬪嚑鐐癸細榛樿鐨勭紪璇戞槸涓嶆敮鎸丼TL鐨勶紝鍙互閫氳繃緙栬緫Makefile鐨凾INYXML_USE_STL := NO閭d竴琛岋紝鎶奛O鏀規垚YES灝卞彲浠ユ敮鎸丼TL浜嗭紱榪樻湁榛樿鍙敓鎴愪簡涓涓祴璇曠▼搴忥紝娌℃湁鐢熸垚浠諱綍搴擄紝濡傛灉瑕佺敓鎴愰潤鎬佸簱鐨勮瘽錛屽彲浠ョ敤ar鍛戒護錛屽皢鐢熸垚鐨勫嚑涓洰鏍囨枃浠舵墦鍖呭氨琛屼簡錛屽鏋滆鐢熸垚鍔ㄦ佸簱錛屽垯闇瑕佸姞涓?fpic鍙傛暟閲嶆柊緙栬瘧銆?/p>
3.聽聽聽聽聽 浣跨敤
鏋勫緩浜嗙浉搴旂殑搴撲箣鍚庯紝鍦ㄤ嬌鐢ㄤ簡瀹冧滑鐨勫伐紼嬩腑錛屽彧瑕佸湪榪炴帴鏃舵妸浠栦滑榪炰笂灝辮浜嗐傞渶瑕佹敞鎰忕殑鏄紝濡傛灉闇瑕丼TL鏀寔錛屽湪緙栬瘧鐢ㄥ埌浜員inyXml鐨勬枃浠舵椂錛岄渶瑕佸畾涔変竴涓畯TIXML_USE_STL錛屽gcc錛屽彲浠ヤ嬌鐢ㄥ弬鏁?DTIXML_USE_STL錛屽cl.exe錛圴C錛夛紝鍙互浣跨敤鍙傛暟/DTIXML_USE_STL錛屽鏋滃珜楹葷儲錛屽彲浠ョ洿鎺ュ畾涔夊湪 tinyxml.h鏂囦歡閲屻?/p>
涓夈?TinyXml鐨勭紪紼嬫ā鍨?.聽聽聽聽聽 綾諱箣闂寸殑鍏崇郴
TinyXml瀹炵幇鐨勬椂DOM璁塊棶妯″瀷錛屽洜姝ゆ彁渚涗簡涓緋誨垪鐨勭被瀵瑰簲XML鏂囦歡涓殑鍚勪釜鑺傜偣銆備富瑕佺被闂寸殑鍏崇郴濡備笅鍥炬墍紺猴細
TiXmlBase錛氬叾浠栫被鐨勫熀綾伙紝鏄釜鎶借薄綾?/p>
TiXmlNode錛氳〃紺轟竴涓妭鐐癸紝鍖呭惈鑺傜偣鐨勪竴鑸柟娉曪紝濡傝闂嚜鑺傜偣銆佸厔寮熻妭鐐廣佺紪杈戣嚜韜佺紪杈戝瓙鑺傜數
TiXmlDocument錛氳〃紺烘暣涓猉ML鏂囨。錛屼笉瀵瑰簲鍏朵腑鏌愪釜鐗瑰畾鐨勮妭鐐廣?/p>
TiXmlElement錛氳〃紺哄厓绱犺妭鐐癸紝鍙互鍖呭惈瀛愯妭鐐瑰拰TiXmlAttribute
TiXmlComment錛氳〃紺烘敞閲?/p>
TiXmlDeclaration錛氳〃紺哄0鏄?/p>
TiXmlText錛氳〃紺烘枃鏈妭鐐?/p>
TiXmlUnknown錛氳〃紺烘湭鐭ヨ妭鐐癸紝閫氬父鏄嚭閿欎簡
TiXmlAttribute錛氳〃紺轟竴涓厓绱犵殑灞炴?/p>
涓嬮潰鏄竴涓畝鍗曠殑渚嬪瓙錛?/p>
<?xml version="1.0" encoding="utf-8" ?>
<!-This is only a sample-->
<book>
聽聽聽聽聽聽 <name>TinyXml How To</name>
聽聽聽聽聽聽 <price unit=鈥漅MB鈥?gt;20</price>
聽聽聽聽聽聽 <description>Some words鈥?lt;/description>
</ book >
鏁翠釜鏂囨。錛屽搴擳iXmlDocument
book,name,price, description錛岄兘瀵瑰簲TiXmlElement
絎竴琛屽搴斾竴涓猅iXmlDeclaration
絎簩琛屽搴斾竴涓猅iXmlComment
鈥淭inyXml How To鈥濆搴斾竴涓猅iXmlText
unit鍒欐槸price鐨勪竴涓猅iXmlAttribute
榪欎簺綾諱笌XML鏂囦歡涓殑鐩稿簲鍏冪礌閮芥湁寰堝ソ鐨勫搴斿叧緋伙紝鍥犳鐩鎬俊鍙傜収TinyXml鐨勬枃妗o紝鍙互寰堝鏄撶殑鎺屾彙鍚勪釜鏂規硶鐨勪嬌鐢ㄣ?/p>
2.聽聽闇瑕佹敞鎰忕殑闂
鍚勭被涔嬮棿鐨勮漿鎹?
鐢變簬鍚勪釜鑺傜偣綾婚兘浠嶵iXmlNode緇ф壙錛屽湪浣跨敤鏃跺父甯擱渶瑕佸皢TiXmlNode*綾誨瀷鐨勬寚閽堣漿鎹負鍏舵淳鐢熺被鐨勬寚閽堬紝鍦ㄨ繘琛岃繖縐嶈漿鎹㈡椂錛屽簲璇ラ鍏堜嬌鐢ㄧ敱TiXmlNode綾繪彁渚涚殑涓緋誨垪杞崲鍑芥暟錛屽ToElement(void)錛岃屼笉鏄痗++鐨刣ynamic_cast
媯鏌ヨ繑鍥炲?
鐢變簬TinyXml鏄竴涓潪鏍¢獙鐨勮В鏋愬櫒錛屽洜姝ゅ綋瑙f瀽涓涓枃浠舵椂錛屽緢鍙兘鏂囦歡騫朵笉鍖呭惈鎴戜滑棰勬湡鐨勬煇涓妭鐐癸紝鍦ㄨ繖縐嶆儏鍐典笅錛孴inyXml灝嗚繑鍥炵┖鎸囬拡銆傚洜姝わ紝蹇呴』瑕佸榪斿洖鍊艱繘琛屾鏌ワ紝鍚﹀垯灝嗗緢瀹規槗鍑虹幇鍐呭瓨璁塊棶鐨勯敊璇?/p>
濡備綍閲嶅ご寤虹珛涓涓猉ML鏂囦歡
鍏堝緩绔嬩竴涓猅iXmlDocument瀵硅薄錛岀劧鍚庯紝杞藉叆鏌愪釜妯℃澘錛屾垨鑰呯洿鎺ユ彃鍏ヤ竴涓妭鐐逛綔涓烘牴鑺傜偣錛屾帴鐫灝卞彲浠ュ儚鎵撳紑涓涓凡鏈夌殑XML鏂囦歡閭f牱瀵瑰畠榪涜鎿嶄綔浜嗐?/p>
鍥涖佹葷粨
TinyXml鏈澶х殑鐗圭偣灝辨槸瀹冨緢灝忥紝鍙互寰堟柟渚跨殑闈欐佽繛鎺ュ埌紼嬪簭閲屻傚浜庡儚閰嶇疆鏂囦歡銆佺畝鍗曠殑鏁版嵁鏂囦歡榪欑被鏂囦歡鐨勮В鏋愶紝瀹冨緢閫傚悎銆備絾鏄敱浜庡畠鏄潪楠岃瘉鐨勶紝鍥犳闇瑕佸湪紼嬪簭閲屽仛璁稿媯鏌ュ伐鍋氾紝鍔犻噸浜嗙▼搴忕紪鍐欑殑璐熸媴銆傚洜姝ゅ浜庡鏉傜殑XML鏂囦歡錛屾垜瑙夊緱鏈濂借繕鏄敤楠岃瘉鐨勮В鏋愬櫒鏉ュ鐞嗐?br />Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=477335
銆婄▼搴忓憳錛屽湪璺笂鈥︹︺?
絎?鑺?-- 鐢∣PENGL鐢誨嚭楹﹀厠鏂淮閫熺巼鍒嗗竷鏇茬嚎