<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2923218862914453128</id><updated>2012-02-15T04:12:42.340+08:00</updated><category term='C'/><category term='IKE'/><category term='Windows'/><category term='NetWork'/><category term='Log'/><category term='10g'/><category term='Endian'/><category term='File Transfer'/><category term='Code'/><category term='module'/><category term='make'/><category term='TCP'/><category term='UDP'/><category term='Comment'/><category term='function'/><category term='itoa'/><category term='makefile'/><category term='IP'/><category term='混合编译'/><category term='Property'/><category term='functor'/><category term='frequent error'/><category term='C，难点'/><category term='VA'/><category term='Service'/><category term='Subversion'/><category term='dir'/><category term='输入输出'/><category term='UDF'/><category term='Auth'/><category term='Problems'/><category term='XML'/><category term='putty'/><category term='callback'/><category term='printf'/><category term='flashget'/><category term='原创'/><category term='SDK'/><category term='函数'/><category term='trac'/><category term='计划'/><category term='学习'/><category term='text'/><category term='Socket'/><category term='Debug'/><category term='VS'/><category term='Basic'/><category term='compiler'/><category term='MindManager'/><category term='javascript'/><category term='PC-LINT'/><category term='cppUnit'/><category term='.Net'/><category term='AJAX'/><category term='注意事项'/><category term='tomcat'/><category term='Checksum'/><category term='Oracle'/><category term='IDE'/><category term='C++'/><category term='string'/><category term='Shell'/><category term='Comm'/><category term='pthread'/><category term='File'/><category term='Win'/><category term='代码检测'/><category term='Macro'/><category term='BCB'/><category term='ViewVC'/><category term='SSL'/><category term='config file'/><category term='memory leak'/><category term='apache'/><category term='hack'/><category term='D.O.S'/><category term='enum'/><category term='Doc'/><category term='Posix'/><category term='gdb'/><category term='tool'/><category term='Thread'/><category term='stream'/><category term='Project'/><category term='Java'/><category term='blog'/><category term='config'/><category term='Hello World'/><category term='C#'/><category term='Syntax'/><category term='PKI'/><category term='Install'/><category term='Linux'/><category term='scanf'/><category term='virus'/><category term='gcc'/><category term='qt'/><category term='SVN'/><category term='Password'/><category term='VC'/><category term='Object Oriented'/><title type='text'>充实过好每一天！</title><subtitle type='html'>我的工作，也就是我的生活～～～</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://chenhao-nari.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://chenhao-nari.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default?start-index=101&amp;max-results=100'/><author><name>陈浩</name><uri>http://www.blogger.com/profile/14506725069676093869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>269</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2923218862914453128.post-7449691444244499327</id><published>2007-11-08T18:48:00.001+08:00</published><updated>2007-11-08T18:48:27.680+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Win'/><title type='text'>批处理 for应用</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;table width='760' cellspacing='0' cellpadding='0' border='0' align='center' class='border2'&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align='center'&gt;&lt;b&gt;批处理 for应用&lt;/b&gt;&lt;br /&gt;	&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td height='1' bgcolor='#d6d6d6'&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td height='25' bgcolor='#f1f1f1' align='center'&gt;&lt;br /&gt;	作者:&lt;font color='#0e3e92'&gt;未知&lt;/font&gt;&lt;br /&gt;	时间:&lt;font color='#0e3e92'&gt;2005-09-13 21:50&lt;/font&gt;&lt;br /&gt;	出处:&lt;font color='#0e3e92'&gt;Blog.ChinaUnix.net&lt;/font&gt;&lt;br /&gt;	责编:&lt;font color='#0e3e92'&gt;chinaitpower&lt;/font&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height='1' bgcolor='#d6d6d6'&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td height='25' bgcolor='#ffffff'&gt;              摘要：批处理 for应用&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td height='1' bgcolor='#d6d6d6'&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;&lt;table width='95%'&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align='center' colspan='9'&gt;&lt;script src='http://www.chinaitpower.com/images/headad.js' language='JavaScript'/&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td height='1' bgcolor='#d6d6d6'&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;	&lt;tr&gt;&lt;br /&gt;		&lt;td&gt;&lt;table border='0' align='left'&gt;&lt;br /&gt;            &lt;tbody&gt;&lt;tr&gt;&lt;br /&gt;              &lt;td&gt;&lt;br /&gt;              &lt;iframe width='336' scrolling='no' height='280' frameborder='0' vspace='0' noresize='' marginwidth='1' marginheight='1' framespacing='0' border='0' src='http://www.chinaitpower.com/images/ad.htm' style='display: none;'/&gt;&lt;br /&gt;            &lt;br/&gt;&lt;/td&gt;&lt;br /&gt;            &lt;/tr&gt;&lt;br /&gt;          &lt;/tbody&gt;&lt;/table&gt;批处理 教程 转贴 for详细&lt;p&gt;for命令应用&lt;br/&gt;&lt;br/&gt;以&lt;br /&gt;前常觉得DOS的命令行功能太弱，无法象UNIX一样可以用命令行完成非常复杂的操作。实际上，当MS从WIN2K开始将命令行增强后，已经借鉴了相当多&lt;br /&gt;UNIX的优点，虽然还无法做到象UNIX那么灵活，但已可完成绝大多数的任务，比如用&amp;amp;&amp;amp;和||连接两个（或更多）命令，由前一个的返&lt;br /&gt;回值来决定下一个是否执行，等等。而在这些增强中，最明显的，就是FOR命令。 &lt;br/&gt;&lt;br/&gt;举个例子，用适当的参数，可用FOR命令将 date /t 的输出 从 "Sat 07/13/2002" 变成你想要的格式，比如， "2002-07-13"： &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;c:&amp;amp;gt;for /f "tokens=2,3,4 delims=/ " %a in ('date /t') do @echo %c-%a-%b &lt;br/&gt;2002-07-13 &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;该例将在（3）中详细说明。 &lt;br/&gt;&lt;br/&gt;0. 基本应用 &lt;br/&gt;&lt;br/&gt;简单说，FOR是个循环，可以用你指定的循环范围生成一系列命令。最简单的例子，就是人工指定循环范围，然后对每个值执行指定的命令。例如，想快速报告每个硬盘分区的剩余空间： &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;for %a in (c: d: e: f do @dir %a | find "bytes free" &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;将输出： &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;8 Dir(s) 1,361,334,272 bytes free &lt;br/&gt;15 Dir(s) 8,505,581,568 bytes free &lt;br/&gt;12 Dir(s) 12,975,149,056 bytes free &lt;br/&gt;7 Dir(s) 11,658,854,400 bytes free &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;用它可以使一些不支持通配符的命令对一系列文件进行操作。在WIN9X中，TYPE命令（显示文件内容）是不支持*.txt这种格式的（WIN2K开始TYPE已支持通配）。遇到类似情况就可以用FOR： &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;for %a in (*.txt) do type %a &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;这些还不是FOR最强大的功能。我认为它最强大的功能，表现在以下这些高级应用： &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;1. 可以用 /r 参数遍历整个目录树 &lt;br/&gt;&lt;br/&gt;2. 可以用 /f 参数将文本文件内容作为循环范围 &lt;br/&gt;&lt;br/&gt;3. 可以用 /f 参数将某一命令执行结果作为循环范围 &lt;br/&gt;&lt;br/&gt;4. 可以用 %~ 操作符将文件名分离成文件名、扩展名、盘符等独立部分 &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;现分别举例说明如下： &lt;br/&gt;&lt;br/&gt;1. 用 /r 遍历目录树 &lt;br/&gt;&lt;br/&gt;当&lt;br /&gt;用 *.* 或 *.txt 等文件名通配符作为 for /r 的循环范围时，可以对当前目录下所有文件（包括子目录里面的文件）进行操作。举个例子，&lt;br /&gt;你想在当前目录的所有txt文件（包括子目录）内容中查找"bluebear"字样，但由于find本身不能遍历子目录，所以我们用for: &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;for /r . %a in (*.txt) do @find "bluebear" %a &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;find 前面的 @ 只是让输出结果不包括 find 命令本身。这是DOS很早就有的功能。和FOR无关。 &lt;br/&gt;&lt;br/&gt;当&lt;br /&gt;用 . 作为循环范围时，for 只将子目录的结构（目录名）作为循环范围，而不包括里面的文件。有点象 TREE 命令，不过侧重点不同。TREE 的&lt;br /&gt;重点是用很漂亮易读的格式输出，而FOR的输出适合一些自动任务，例如，我们都知道用CVS管理的项目中，每个子目录下都会有一个CVS目录，有时在软件&lt;br /&gt;发行时我们想把这些CVS目录全部去掉： &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;for /r . %a in (.) do @if exist %aCVS rd /s /q %aCVS &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;先用 if exist 判断一下，是因为 for 只是机械的对每个目录进行列举，如果有些目录下面没有CVS也会被执行到。用 if exist 判断一下比较安全。 &lt;br/&gt;&lt;br/&gt;这种删除命令威力太大，请小心使用。最好是在真正执行以上的删除命令前，将 rd /s /q 换成 @echo 先列出要删出的目录，确认无误后再换回rd /s /q： &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;for /r . %a in (.) do @if exist %aCVS @echo %aCVS &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;可能目录中会多出一层 "."，比如 c:projrelease.CVS ，但不会影响命令的执行效果。 &lt;br/&gt;&lt;br/&gt;2. 将某一文件内容或命令执行结果作为循环范围： &lt;br/&gt;&lt;br/&gt;假如你有一个文件 todel.txt，里面是所有要删除的文件列表，现在你想将里面列出的每个文件都删掉。假设这个文件是每个文件名占一行，象这样： &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;c:tempa1.txt &lt;br/&gt;c:tempa2.txt &lt;br/&gt;c:tempsubdirb3.txt &lt;br/&gt;c:tempsubdirb4.txt &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;那么可以用FOR来完成： &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;for /f %a in (todel.txt) do del %a &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;这个命令还可以更强大。比如你的 todel.txt 并不是象上面例子那么干净，而是由DIR直接生成，有一些没用的信息，比如这样： &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Volume in drive D is DATA &lt;br/&gt;Volume Serial Number is C47C-9908 &lt;br/&gt;&lt;br/&gt;Directory of D:tmp &lt;br/&gt;&lt;br/&gt;09/26/2001 12:50 PM 18,426 alg0925.txt &lt;br/&gt;12/02/2001 04:29 AM 795 bsample.txt &lt;br/&gt;04/11/2002 04:18 AM 2,043 invitation.txt &lt;br/&gt;4 File(s) 25,651 bytes &lt;br/&gt;0 Dir(s) 4,060,700,672 bytes free &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;for 仍然可以解出其中的文件名并进行操作： &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;for /f "skip=5 tokens=5" %a in (todel.txt) do @if exist %a DEL %a &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;当然，上面这个命令是在进行删除，如果你只是想看看哪些文件将被操作，把DEL换成echo: &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;for /f "skip=5 tokens=5" %a in (todel.txt) do @if exist %a echo %a &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;你将看到： &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;alg0925.txt &lt;br/&gt;bsample.txt &lt;br/&gt;invitation.txt &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;skip&lt;br /&gt;=5表示跳过前5行（就是DIR输出的头部信息），tokens=5表示将每行的第5列作为循环值放入%a，正好是文件名。在这里我加了一个文件存在判&lt;br /&gt;断，是因为最后一行的"free"刚好也是第5列，目前还想不出好的办法来滤掉最后两行，所以检查一下可保万无一失。 &lt;br/&gt;&lt;br/&gt;3. 可以用 /f 参数将某一命令执行结果作为循环范围 &lt;br/&gt;&lt;br/&gt;非常有用的功能。比如，我们想知道目前的环境变量有哪些名字（我们只要名字，不要值）。可是SET命令的输出是“名字=值”的格式，现在可以用FOR来只取得名字部分： &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;FOR /F "delims==" %i IN ('set') DO @echo %i &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;将看到： &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;ALLUSERSPROFILE &lt;br/&gt;APPDATA &lt;br/&gt;CLASSPATH &lt;br/&gt;CommonProgramFiles &lt;br/&gt;COMPUTERNAME &lt;br/&gt;ComSpec &lt;br/&gt;dircmd &lt;br/&gt;HOMEDRIVE &lt;br/&gt;...... &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;这里是将set命令执行的结果拿来作为循环范围。delims==表示用=作为分隔符，由于FOR /F默认是用每行第一个TOKEN，所以可以分离出变量名。如果是想仅列出值： &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;FOR /F "delims== tokens=2" %i IN ('set') DO @echo %i &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;tokens=2和前例相同，表示将第二列（由=作为分隔符）作为循环值。 &lt;br/&gt;&lt;br/&gt;再来个更有用的例子： &lt;br/&gt;&lt;br/&gt;我们知道 date /t （/t表示不要询问用户输入）的输出是象这样的： &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Sat 07/13/2002 &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;现在我想分离出日期部分，也就是13： &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;for /f "tokens=3 delims=/ " %a in ('date /t') do @echo %a &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;实际上把 tokens后面换成1,2,3或4，你将分别得到Sat, 07, 13和2002。注意delims=/后面还有个空格，表示/和空格都是分隔符。由于这个空格delims必须是/f选项的最后一项。 &lt;br/&gt;&lt;br/&gt;再灵活一点，象本文开头提到的，将日期用2002-07-13的格式输出： &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;for /f "tokens=2,3,4 delims=/ " %a in ('date /t') do @echo %c-%a-%b &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;当tokens后跟多个值时，将分别映射到%a, %b, %c等。实际上跟你指定的变量有关，如果你指定的是 %i, 它们就会用%i, %j, %k等。 &lt;br/&gt;&lt;br/&gt;灵活应用这一点，几乎没有做不了的事。 &lt;br/&gt;&lt;br/&gt;4. 可以用 %~ 操作符将文件名分离成文件名、扩展名、盘符等独立部分 &lt;br/&gt;&lt;br/&gt;这个比较简单，就是说将循环变量的值自动分离成只要文件名，只要扩展名，或只要盘符等等。 &lt;br/&gt;&lt;br/&gt;例：要将 c:mp3下所有mp3的歌名列出，如果用一般的 dir /b/s 或 for /r ，将会是这样： &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;g:mp3Archived5-18-01-A游鸿明-下沙游鸿明-01 下沙.mp3 &lt;br/&gt;g:mp3Archived5-18-01-A游鸿明-下沙游鸿明-02 21个人.mp3 &lt;br/&gt;...... &lt;br/&gt;g:mp3Archived5-18-01-A王菲-寓言王菲-阿修罗.mp3 &lt;br/&gt;g:mp3Archived5-18-01-A王菲-寓言王菲-彼岸花.mp3 &lt;br/&gt;g:mp3Archived5-18-01-A王菲-寓言王菲-不爱我的我不爱.mp3 &lt;br/&gt;...... &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;如果我只要歌名（不要路径和".mp3"）： &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;游鸿明-01 下沙 &lt;br/&gt;游鸿明-02 21个人 &lt;br/&gt;...... &lt;br/&gt;王菲-阿修罗 &lt;br/&gt;王菲-彼岸花 &lt;br/&gt;王菲-不爱我的我不爱 &lt;br/&gt;...... &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;那么可以用FOR命令： &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;for /r g:mp3 %a in (*.mp3) do @echo %~na &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;凡是 %~ 开头的操作符，都是文件名的分离操作。具体请看 for /? 帮助。 &lt;br/&gt;&lt;br/&gt;本文举的例子有些可能没有实际用处，或可用其它办法完成。仅用于体现FOR可以不借助其它工具，仅用DOS命令组合，就可完成相当灵活的任务。&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;&lt;p class='poweredbyperformancing'&gt;Powered by &lt;a href='http://scribefire.com/'&gt;ScribeFire&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2923218862914453128-7449691444244499327?l=chenhao-nari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chenhao-nari.blogspot.com/feeds/7449691444244499327/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2923218862914453128&amp;postID=7449691444244499327' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/7449691444244499327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/7449691444244499327'/><link rel='alternate' type='text/html' href='http://chenhao-nari.blogspot.com/2007/11/for.html' title='批处理 for应用'/><author><name>陈浩</name><uri>http://www.blogger.com/profile/14506725069676093869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2923218862914453128.post-7775944664795780398</id><published>2007-10-27T02:31:00.001+08:00</published><updated>2007-10-27T02:48:26.339+08:00</updated><title type='text'>NetBeans 5.5 UML 建模模块下载和安装说明</title><content type='html'>&lt;h1&gt; NetBeans 5.5 UML 建模模块下载和安装说明 &lt;/h1&gt; &lt;blockquote&gt; &lt;p&gt;NetBeans 5.5™ UML 建模模块为 NetBeans IDE 提供了 UML 建模&lt;a href="http://uml.netbeans.org/features.html"&gt;功能&lt;/a&gt;。通过 UML 建模功能，分析师和设计人员可以使用一种标准的建模语言来设计应用程序；开发者则可以根据 UML 模型来生成源代码，并通过对源代码执行的更改来更新此模型。&lt;/p&gt; &lt;p&gt;您可以通过 NetBeans 更新中心下载并安装 UML 建模模块。要访问更新中心，请在 NetBeans IDE 主菜单中单击“工具”&gt;“更新中心”。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Mac 用户请注意&lt;/b&gt;：Macintosh OS X 平台目前不支持 UML 建模模块。要获取有关已知问题和解决方法的更多信息，请参见&lt;a href="http://www.netbeans.org/community/releases/55/uml-mac-relnotes_zh_CN.html"&gt;适用于 Mac OS 平台的发行说明&lt;/a&gt;。&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;&lt;b&gt;目录&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.netbeans.org/community/releases/55/uml-download_zh_CN.html#prerequisites" title="先决条件"&gt;先决条件&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.netbeans.org/community/releases/55/uml-download_zh_CN.html#installation" title="安装软件"&gt;下载并安装软件&lt;/a&gt;         &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.netbeans.org/community/releases/55/uml-download_zh_CN.html#Increasing_Memory_Settings"&gt;增加内存设置&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;!-- PREREQUISITES --&gt; &lt;h2&gt;&lt;a name="prerequisites"&gt;&lt;/a&gt;先决条件&lt;/h2&gt; &lt;p&gt;本主题指定了在开始安装 NetBeans 5.5 UML 建模模块之前，必须满足的先决条件。&lt;/p&gt;  &lt;blockquote&gt; &lt;h3&gt;所需的软件&lt;/h3&gt; &lt;p&gt;在试图安装 NetBeans 5.5 UML 建模模块之前，必须首先安装以下软件：&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;NetBeans IDE 5.5（以下简称 "IDE"）&lt;/li&gt;&lt;/ul&gt; &lt;b&gt;注意：&lt;/b&gt;有关安装 NetBeans 5.5 UML 建模模块的系统要求信息，请参见 &lt;a href="http://www.netbeans.org/community/releases/55/uml-relnotes_zh_CN.html#sysreqs"&gt;UML 建模模块发行说明&lt;/a&gt;。&lt;br /&gt;&lt;/blockquote&gt;  &lt;p align="center"&gt;&lt;a href="http://www.netbeans.org/community/releases/55/uml-download_zh_CN.html#top"&gt;返回页首&lt;/a&gt;&lt;/p&gt;&lt;br /&gt; &lt;!-- INSTALLATION --&gt; &lt;h2&gt;&lt;a name="installation"&gt;&lt;/a&gt;下载并安装软件&lt;/h2&gt; &lt;p&gt;本部分包含有关下载 NetBeans 5.5 UML 建模模块并在所有支持的平台上进行安装的说明。&lt;/p&gt; &lt;p&gt;&lt;b&gt;注意：&lt;/b&gt;如果曾经安装了任何 UML 建模模块的 Beta 版本，则无需卸载 Beta 版本。不过，这会造成安装后期的步骤略有不同，我们将在下面的步骤中加以说明。&lt;/p&gt;  &lt;!-- RELEASE_UC --&gt; &lt;ol&gt;&lt;li&gt;在 IDE 主菜单中，单击“工具”&gt;“更新中心”。&lt;br /&gt;此时，会出现更新中心向导。&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;在“选择模块位置”页中，选中“NetBeans 更新中心”复选框（如果尚未选中）。&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;（可选）取消选中所有其他复选框，以最大限度地减少生成的可用模块列表中的条目个数。&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt; 单击“下一步”。&lt;br /&gt;IDE 在与 NetBeans 更新中心建立连接期间，将会显示一个进度对话框。&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;在更新中心向导的“选择要安装的模块”页中，滚动到“功能”文件夹下的“UML 建模”节点。&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;选择 UML 建模模块，然后单击“添加”。&lt;br /&gt;在位于右侧的“包含在安装中”窗格中，您会看到 UML 建模模块及其所需的所有相关库模块。&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;单击“更多”按钮可查看 UML 建模项目页。&lt;br /&gt;将打开一个 Web 浏览器以显示此 UML 项目页。&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;返回至更新中心向导，然后单击“下一步”。&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;阅读并接受 4 个 UML 许可证。&lt;br /&gt;将出现“下载模块”页，同时显示下载模块时的进度。&lt;br /&gt;&lt;p&gt;&lt;b&gt;注意：&lt;/b&gt;如果通过 UML 建模模块的 Beta 版本进行升级，则系统不会提示您接受 4 个 UML 许可证。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;完成模块下载后，请单击“下一步”。&lt;br /&gt;将为您显示可供查看的证书列表。&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;单击“完成”。&lt;br /&gt;如果通过 UML 建模模块的 Beta 版本进行升级，则会出现“重新启动 IDE”的对话框。请继续执行&lt;a href="http://www.netbeans.org/community/releases/55/uml-download_zh_CN.html#restart_ide1"&gt;下一步&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;如果 UML 建模模块不是通过 Beta 版本进行升级的，则系统会继续执行 UML 模块安装。更新中心向导消失后，仍需要几分钟的时间才能完成安装。当您看到 IDE 窗口左下角显示消息“正在启动模块...完成”时，则表示安装结束。&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a name="restart_ide1"&gt;&lt;/a&gt;在“重新启动 IDE”对话框中，选择“重新启动 IDE”，然后单击“确定”以继续执行 UML 建模模块的安装。&lt;br /&gt;如果选择“稍后安装”，则在下次重新启动 IDE 时才会安装 UML 建模模块。&lt;br /&gt;&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;请阅读&lt;a href="http://www.netbeans.org/community/releases/55/uml-relnotes_zh_CN.html"&gt;发行说明&lt;/a&gt;页以了解有关此发行版本的重要信息。&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p align="center"&gt;&lt;a href="http://www.netbeans.org/community/releases/55/uml-download_zh_CN.html#top"&gt;返回页首&lt;/a&gt;&lt;/p&gt; &lt;!-- INCREASE_MEMORY --&gt;&lt;br /&gt;&lt;h2&gt;&lt;a name="Increasing_Memory_Settings"&gt;&lt;/a&gt;增加内存设置&lt;/h2&gt; &lt;p&gt;在 IDE 中处理 UML 项目时，应增加 NetBeans 的缺省内存设置。安装了 UML 模块后，请执行以下步骤以确保在处理 UML 项目时 IDE 中的内存设置正确无误。 &lt;/p&gt; &lt;ol&gt;&lt;li&gt;在 IDE 主菜单中，单击“帮助”&gt;“关于”，然后单击“详细信息”标签。&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;通过查找“当前目录”字段，确定安装 NetBeans 5.5 IDE 时所对应的安装目录 &lt;i&gt;&lt;netbeans55-install-directory&gt;&lt;/i&gt; 的路径。&lt;br /&gt;例如，缺省安装目录为 &lt;code&gt;C:\Program Files\netbeans-5.5&lt;/code&gt; (Microsoft Windows)。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;转至通过上一步确定的 NetBeans IDE 安装目录 &lt;i&gt;&lt;netbeans55-install-directory&gt;&lt;/i&gt;。&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;转至 &lt;code&gt;etc/&lt;/code&gt; 目录。&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;编辑 &lt;code&gt;netbeans.conf&lt;/code&gt; 文件。&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;在 &lt;code&gt;netbeans_default_options&lt;/code&gt; 行中，将 &lt;code&gt;-J-Xmx128m&lt;/code&gt; 命令行开关选项更改为 &lt;code&gt;-J-Xmx512m&lt;/code&gt;。&lt;br /&gt;&lt;b&gt;注意：&lt;/b&gt;如果在执行了此步骤后，处理大型文件时仍出现堆溢出的问题，则应当继续增加该值。&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2923218862914453128-7775944664795780398?l=chenhao-nari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.netbeans.org/community/releases/55/uml-download_zh_CN.html#prerequisites' title='NetBeans 5.5 UML 建模模块下载和安装说明'/><link rel='replies' type='application/atom+xml' href='http://chenhao-nari.blogspot.com/feeds/7775944664795780398/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2923218862914453128&amp;postID=7775944664795780398' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/7775944664795780398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/7775944664795780398'/><link rel='alternate' type='text/html' href='http://chenhao-nari.blogspot.com/2007/10/netbeans-55-uml.html' title='NetBeans 5.5 UML 建模模块下载和安装说明'/><author><name>陈浩</name><uri>http://www.blogger.com/profile/14506725069676093869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2923218862914453128.post-1924750770405046937</id><published>2007-10-27T02:31:00.000+08:00</published><updated>2007-10-27T02:34:57.120+08:00</updated><title type='text'>最近的积累 - []</title><content type='html'>&lt;h2&gt;最近的积累&lt;span class="sort"&gt; - []&lt;/span&gt;&lt;/h2&gt;                &lt;p&gt;linux网卡模块：mii.o，再是insmod具体的驱动模块。&lt;/p&gt;&lt;p&gt;vsftpd：使用xined 做demon无法绑定21端口，为使vsftpd独立监听启动，改xined.d/vsftpd中的disable为yes。vsftpd.conf中设为listen=YES，ipv6补丁&lt;/p&gt;&lt;p&gt;重定向：0标准输入、1标准输出、2标准错误、&amp;amp;全部。例如，ls -a 2 &gt;filename 错误信息。&lt;/p&gt;&lt;p&gt;mencoder编解码：mencoder -ovc format -oav format sourcefile -o dest。&lt;/p&gt;&lt;p&gt;sql：1st范式：不存在两行完全相同；2nd：部分依赖于主键不存在，如果有则分成多个表；3rd：消除传递依赖。&lt;/p&gt;&lt;p&gt;sourceinsight的解析*.cc问题：preference中C++language-&gt;doc type-&gt;加入*.cc-&gt;重解析&lt;/p&gt;&lt;p&gt;ipv6suite 使用：cmakelist.txt，omnet.ini，*.ned，*.xml，将*.ned加入../../etc/default.ini中可以不 用preload；xmllint --noout --valid *.xml判断xml的正确性至无输出。移动节点xml需要定义mn.linklayer[0].NWIName="wireless Ethermodule"；优化DAD、HMIPv6也在这里配置。udp流numofUdpApps配置数量，Udpname，server见 pingnetwork，路由时的下跳是sitelocal地址。看MN的网络层信息： *.MN.networkLayer.proc.forwarding.core.routingInfoDisplay = true&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2923218862914453128-1924750770405046937?l=chenhao-nari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://morningsun.blogbus.com/logs/1190689.html' title='最近的积累 - []'/><link rel='replies' type='application/atom+xml' href='http://chenhao-nari.blogspot.com/feeds/1924750770405046937/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2923218862914453128&amp;postID=1924750770405046937' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/1924750770405046937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/1924750770405046937'/><link rel='alternate' type='text/html' href='http://chenhao-nari.blogspot.com/2007/10/blog-post.html' title='最近的积累 - []'/><author><name>陈浩</name><uri>http://www.blogger.com/profile/14506725069676093869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2923218862914453128.post-7199767542842383777</id><published>2007-10-27T02:27:00.003+08:00</published><updated>2007-10-27T02:31:15.604+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TCP'/><title type='text'>TCP粘包的问题大家是怎么处理的</title><content type='html'>&lt;h1&gt;TCP粘包的问题大家是怎么处理的&lt;/h1&gt;&lt;div class="author"&gt; &lt;a class="anchor" name="Top"&gt;楼主&lt;/a&gt;karllere（我想换工作，哪有招C++游戏程序员的联系我。）&lt;input class="user1" title="一级用户 该版得分小于等于100分" type="button"&gt;2005-06-13 08:32:36 在  VC/MFC / 网络编程 提问&lt;/div&gt; &lt;p&gt; 如果网速过慢，客户端两次发送的数据可能会被服务端一次就全部接收。  &lt;br /&gt;  那么这种情况下要如何分清服务端接收到的数据包是客户端几次发送的呢！  &lt;br /&gt;  有一种方法是给每次发送的数据包加上数据包的长度，可是这仲做法如果网上出现丢包怎么办呀！ &lt;span&gt;问题点数：0、回复次数：19&lt;/span&gt;&lt;a href="http://topic.csdn.net/t/20050613/08/4077554.html#"&gt;Top&lt;/a&gt; &lt;/p&gt; &lt;div class="tagad"&gt; &lt;iframe src="http://topic.csdn.net/Include/Board.htm?Tags=" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/div&gt; &lt;h3&gt;&lt;strong&gt;&lt;a class="anchor" name="r_30032101"&gt;1 楼&lt;/a&gt;fisker0303（天塌了,地陷了,小花狗不见了.）&lt;input class="star2" title="二星用户 该版得分小于等于30000分，大于10000分" type="button"&gt;&lt;/strong&gt;&lt;span&gt;回复于 2005-06-13 09:43:01 得分 0 &lt;/span&gt;&lt;/h3&gt; &lt;p&gt;http://www.xiaozhou.net/ReadNews.asp?NewsID=240&lt;a href="http://topic.csdn.net/t/20050613/08/4077554.html#"&gt;Top&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;&lt;a class="anchor" name="r_30032120"&gt;2 楼&lt;/a&gt;fisker0303（天塌了,地陷了,小花狗不见了.）&lt;input class="star2" title="二星用户 该版得分小于等于30000分，大于10000分" type="button"&gt;&lt;/strong&gt;&lt;span&gt;回复于 2005-06-13 09:43:34 得分 0 &lt;/span&gt;&lt;/h3&gt; &lt;p&gt;一般来说，TCP的可靠性是应该充分相信的。&lt;a href="http://topic.csdn.net/t/20050613/08/4077554.html#"&gt;Top&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;&lt;a class="anchor" name="r_30033609"&gt;3 楼&lt;/a&gt;karllere（我想换工作，哪有招C++游戏程序员的联系我。）&lt;input class="user1" title="一级用户 该版得分小于等于100分" type="button"&gt;&lt;/strong&gt;&lt;span&gt;回复于 2005-06-13 10:39:02 得分 0 &lt;/span&gt;&lt;/h3&gt; &lt;p&gt;我想用下面的方法实现分包  &lt;br /&gt;    &lt;br /&gt;  每一个数据包在发送时定义如下格式  &lt;br /&gt;  数据包长度|数据包序号|数据包内容  &lt;br /&gt;    &lt;br /&gt;  可是上面的形式在一定的情况下是错误的  &lt;br /&gt;  就是如果在客户端一份数据被自动分成两个数据包发送，而且第二个数据包在途中丢失，那么数据就不能完整的到达服务端了。  &lt;br /&gt;    &lt;br /&gt;  大家谁有TCP报头的数据格式资料啊！&lt;a href="http://topic.csdn.net/t/20050613/08/4077554.html#"&gt;Top&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;&lt;a class="anchor" name="r_30033911"&gt;4 楼&lt;/a&gt;helldream2002（）&lt;input class="user4" title="四级用户 该版得分小于等于2000分，大于1000分" type="button"&gt;&lt;/strong&gt;&lt;span&gt;回复于 2005-06-13 10:51:09 得分 0 &lt;/span&gt;&lt;/h3&gt; &lt;p&gt;只要协议定义得好，粘包就好解决  &lt;br /&gt;  一般来说协议中都应该包含包头和数据长度&lt;a href="http://topic.csdn.net/t/20050613/08/4077554.html#"&gt;Top&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;&lt;a class="anchor" name="r_30034087"&gt;5 楼&lt;/a&gt;younggle（洋溢）&lt;input class="star1" title="一星用户 该版得分小于等于10000分，大于5000分" type="button"&gt;&lt;/strong&gt;&lt;span&gt;回复于 2005-06-13 10:57:44 得分 0 &lt;/span&gt;&lt;/h3&gt; &lt;p&gt;自己定义一个协议头，协议头的长度是固定的，协议头包含数据内容的长度。  &lt;br /&gt;  接收消息时，先接收固定长度的协议头，然后根据协议头中数据的长度再接收数据内容。  &lt;br /&gt;  也就是说，一条消息分2次接收。  &lt;br /&gt;  这样可以处理粘包问题的。&lt;a href="http://topic.csdn.net/t/20050613/08/4077554.html#"&gt;Top&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;&lt;a class="anchor" name="r_30034105"&gt;6 楼&lt;/a&gt;alfwolf（木马煞）&lt;input class="star1" title="一星用户 该版得分小于等于10000分，大于5000分" type="button"&gt;&lt;/strong&gt;&lt;span&gt;回复于 2005-06-13 10:58:18 得分 0 &lt;/span&gt;&lt;/h3&gt; &lt;p&gt;是的,这样的情况你必须定义你的数据包的格式,包头-信息类别-长度等,必要时需要加校验位和结束字符.  &lt;br /&gt;  但是TCP报文是可靠的.&lt;a href="http://topic.csdn.net/t/20050613/08/4077554.html#"&gt;Top&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;&lt;a class="anchor" name="r_30034443"&gt;7 楼&lt;/a&gt;qrlvls（ 空 气 ）&lt;input class="star3" title="三星用户 该版得分小于等于50000分，大于30000分" type="button"&gt;&lt;/strong&gt;&lt;span&gt;回复于 2005-06-13 11:11:01 得分 0 &lt;/span&gt;&lt;/h3&gt; &lt;p&gt;通过自定义帧格式来完成，在帧中加入长度字段&lt;a href="http://topic.csdn.net/t/20050613/08/4077554.html#"&gt;Top&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;&lt;a class="anchor" name="r_30034459"&gt;8 楼&lt;/a&gt;qrlvls（ 空 气 ）&lt;input class="star3" title="三星用户 该版得分小于等于50000分，大于30000分" type="button"&gt;&lt;/strong&gt;&lt;span&gt;回复于 2005-06-13 11:11:27 得分 0 &lt;/span&gt;&lt;/h3&gt; &lt;p&gt;同意   karllere   ，不过序号不需要，因为   TCP   不会乱序&lt;a href="http://topic.csdn.net/t/20050613/08/4077554.html#"&gt;Top&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;&lt;a class="anchor" name="r_30039339"&gt;9 楼&lt;/a&gt;karllere（我想换工作，哪有招C++游戏程序员的联系我。）&lt;input class="user1" title="一级用户 该版得分小于等于100分" type="button"&gt;&lt;/strong&gt;&lt;span&gt;回复于 2005-06-13 14:15:44 得分 0 &lt;/span&gt;&lt;/h3&gt; &lt;p&gt;请看下面的这两组数据  &lt;br /&gt;    &lt;br /&gt;  报头   |   报文  &lt;br /&gt;  10               ABCDEFGHIJ  &lt;br /&gt;  8                  ABCDEFGH  &lt;br /&gt;    &lt;br /&gt;  假设以上报文的第一组被操作系统分成两次发送  &lt;br /&gt;  第一次为   10ABCD  &lt;br /&gt;  第二次为   EFGHIJ  &lt;br /&gt;  如果第二次的数据丢失，下一组数据8ABCDEFGH又到达了。  &lt;br /&gt;  那么在缓冲区中就会有这样的形式10ABCD8ABCDEFGH  &lt;br /&gt;  根据数据格式定义，在一次读取数据时就会取出10ABCD8ABCDE  &lt;br /&gt;  如果出现以上情况的话就会造成所有后续发来的数据包全部读取错误。  &lt;br /&gt;  &lt;a href="http://topic.csdn.net/t/20050613/08/4077554.html#"&gt;Top&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;&lt;a class="anchor" name="r_30046244"&gt;10 楼&lt;/a&gt;karllere（我想换工作，哪有招C++游戏程序员的联系我。）&lt;input class="user1" title="一级用户 该版得分小于等于100分" type="button"&gt;&lt;/strong&gt;&lt;span&gt;回复于 2005-06-13 19:23:05 得分 0 &lt;/span&gt;&lt;/h3&gt; &lt;p&gt;MFC中的CSocket类内部会自动处理粘包和丢包的问题吗？&lt;a href="http://topic.csdn.net/t/20050613/08/4077554.html#"&gt;Top&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;&lt;a class="anchor" name="r_30048154"&gt;11 楼&lt;/a&gt;cryptonym（想裸睡）&lt;input class="user3" title="三级用户 该版得分小于等于1000分，大于500分" type="button"&gt;&lt;/strong&gt;&lt;span&gt;回复于 2005-06-13 22:13:41 得分 0 &lt;/span&gt;&lt;/h3&gt; &lt;p&gt;tcp的协议层给你处理了丢包，所以你都不需要考虑丢包的问题。  &lt;br /&gt;    &lt;br /&gt;  你把收到的数据放倒一个buffer里，从里面找header，然后解析出数据就ok了。  &lt;br /&gt;    &lt;br /&gt;  如果udp的话会乱序，tcp都不需要考虑这些的。&lt;a href="http://topic.csdn.net/t/20050613/08/4077554.html#"&gt;Top&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;&lt;a class="anchor" name="r_30048374"&gt;12 楼&lt;/a&gt;AntonlioX（做人要厚道）&lt;input class="star1" title="一星用户 该版得分小于等于10000分，大于5000分" type="button"&gt;&lt;/strong&gt;&lt;span&gt;回复于 2005-06-13 22:39:08 得分 0 &lt;/span&gt;&lt;/h3&gt; &lt;p&gt;可以使用如下的方法接收数据：  &lt;br /&gt;    &lt;br /&gt;  需要循环调用Receive的   知道你实际接收的字节数＝＝   你本来打算接收的字节数  &lt;br /&gt;    &lt;br /&gt;  下面是我的程序中的一段代码  &lt;br /&gt;    &lt;br /&gt;  BOOL   MyReceiveData(CSocket   *psocket,char   *data,DWORD   len)  &lt;br /&gt;  {  &lt;br /&gt;  DWORD   left,idx,ret;  &lt;br /&gt;  left=len;  &lt;br /&gt;  idx=0;  &lt;br /&gt;       &lt;br /&gt;  while(left&gt;0)  &lt;br /&gt;  {  &lt;br /&gt;  ret   =   psocket-&gt;Receive(&amp;amp;data[idx],left,0   );  &lt;br /&gt;  if(   ret   ==   SOCKET_ERROR)  &lt;br /&gt;  {  &lt;br /&gt;  return   FALSE;  &lt;br /&gt;  }  &lt;br /&gt;  left-=ret;  &lt;br /&gt;  idx+=ret;  &lt;br /&gt;  }  &lt;br /&gt;    &lt;br /&gt;  return   (idx==len)?TRUE:FALSE;  &lt;br /&gt;  }&lt;a href="http://topic.csdn.net/t/20050613/08/4077554.html#"&gt;Top&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;&lt;a class="anchor" name="r_30048673"&gt;13 楼&lt;/a&gt;hxzb7215191（天行健,君子以自强不息）&lt;input class="user4" title="四级用户 该版得分小于等于2000分，大于1000分" type="button"&gt;&lt;/strong&gt;&lt;span&gt;回复于 2005-06-13 23:10:25 得分 0 &lt;/span&gt;&lt;/h3&gt; &lt;p&gt;老问题，这东西还是使用自己定义的协议。  &lt;br /&gt;    &lt;br /&gt;  说明你的数据包的大小。  &lt;br /&gt;    &lt;br /&gt;  使用那个socket的控件就爽多了。  &lt;br /&gt;    &lt;br /&gt;  &lt;a href="http://topic.csdn.net/t/20050613/08/4077554.html#"&gt;Top&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;&lt;a class="anchor" name="r_30054295"&gt;14 楼&lt;/a&gt;karllere（我想换工作，哪有招C++游戏程序员的联系我。）&lt;input class="user1" title="一级用户 该版得分小于等于100分" type="button"&gt;&lt;/strong&gt;&lt;span&gt;回复于 2005-06-14 10:52:13 得分 0 &lt;/span&gt;&lt;/h3&gt; &lt;p&gt;CSocketFile   是完成什么优化工作的呢！  &lt;br /&gt;  在MFC的示例中总是说要将CSocket、CSocketFile和CArchive联合使用来完成信息的收发工作。  &lt;br /&gt;  可是我感觉这样还不如真接用CAsyncSocket::Receive方便呢！  &lt;br /&gt;  我就在想...  &lt;br /&gt;  CSocketFile是不是内部有处理粘包的机制啊！  &lt;br /&gt;    &lt;br /&gt;    还有就是对于Socket的一切猜想都需要一个&lt;nobr id="key0" style="border-bottom: 1px dotted rgb(102, 0, 255); text-decoration: underline; color: rgb(102, 0, 255); background-color: transparent;" onclick="return kwC();" target="_blank" oncontextmenu="return false;" onmouseover="kwE(event,0, this);" onmouseout="kwL(event, this);" onmousemove="kwM(0);"&gt;测试&lt;/nobr&gt;工具来验证，那么谁有好的测试工具呢！  &lt;br /&gt;  能不能给我提供一个呀！&lt;a href="http://topic.csdn.net/t/20050613/08/4077554.html#"&gt;Top&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;&lt;a class="anchor" name="r_30064698"&gt;15 楼&lt;/a&gt;wilddragon（东瀛倭族自治州州长）&lt;input class="user3" title="三级用户 该版得分小于等于1000分，大于500分" type="button"&gt;&lt;/strong&gt;&lt;span&gt;回复于 2005-06-14 17:36:38 得分 0 &lt;/span&gt;&lt;/h3&gt; &lt;p&gt;MFC的CSocketFile有毛病的，千万别用。在粘包时经常出问题，最后我放弃用它，就好了。  &lt;br /&gt;  用CAsyncSocket::Receive接收下来以后，自己处理吧。&lt;a href="http://topic.csdn.net/t/20050613/08/4077554.html#"&gt;Top&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;&lt;a class="anchor" name="r_30065149"&gt;16 楼&lt;/a&gt;qianyong325（帝王企鹅）&lt;input class="user2" title="二级用户 该版得分小于等于500分，大于100分" type="button"&gt;&lt;/strong&gt;&lt;span&gt;回复于 2005-06-14 17:55:04 得分 0 &lt;/span&gt;&lt;/h3&gt; &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;发送数据的协议定好，一般有   包头，长度，数据段，校验（有的还有包尾），然后写个协议控制层专门处理分包，粘包的问题&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2923218862914453128-7199767542842383777?l=chenhao-nari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://topic.csdn.net/t/20050613/08/4077554.html#' title='TCP粘包的问题大家是怎么处理的'/><link rel='replies' type='application/atom+xml' href='http://chenhao-nari.blogspot.com/feeds/7199767542842383777/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2923218862914453128&amp;postID=7199767542842383777' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/7199767542842383777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/7199767542842383777'/><link rel='alternate' type='text/html' href='http://chenhao-nari.blogspot.com/2007/10/tcp.html' title='TCP粘包的问题大家是怎么处理的'/><author><name>陈浩</name><uri>http://www.blogger.com/profile/14506725069676093869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2923218862914453128.post-783030495442398742</id><published>2007-10-27T02:27:00.002+08:00</published><updated>2007-10-27T02:30:26.807+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>linux kernel 体系结构 - [Linux]</title><content type='html'>&lt;h2&gt;linux kernel 体系结构&lt;span class="sort"&gt; - [&lt;a href="http://morningsun.blogbus.com/c1518200/"&gt;Linux&lt;/a&gt;]&lt;/span&gt;&lt;/h2&gt;                &lt;p&gt;&lt;img src="http://www.ibm.com/developerworks/cn/linux/l-linux-kernel/figure2.jpg" alt="" border="0" height="250" width="370" /&gt;&lt;/p&gt;&lt;p&gt;linux 系统软件体系结构如图，user mode 进程需要通过glibc作一个到kernel  mode 的转换 &lt;/p&gt;&lt;p&gt;&lt;img src="http://www.ibm.com/developerworks/cn/linux/l-linux-kernel/figure3.jpg" alt="" border="0" height="249" width="319" /&gt;&lt;/p&gt;&lt;p&gt;Linux kernel 的体系结构 &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; 进程管理：linux/arch/xxx 依赖于具体体系结构 &lt;/p&gt;&lt;p&gt; 内存管理：linux/mm/&lt;/p&gt;&lt;p&gt; VFS：     linux/fs&lt;/p&gt;&lt;p&gt; 协议栈：  linux/net&lt;/p&gt;&lt;p&gt; 设备驱动：linux/drivers &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2923218862914453128-783030495442398742?l=chenhao-nari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://morningsun.blogbus.com/logs/6364968.html' title='linux kernel 体系结构 - [Linux]'/><link rel='replies' type='application/atom+xml' href='http://chenhao-nari.blogspot.com/feeds/783030495442398742/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2923218862914453128&amp;postID=783030495442398742' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/783030495442398742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/783030495442398742'/><link rel='alternate' type='text/html' href='http://chenhao-nari.blogspot.com/2007/10/linux-kernel-linux.html' title='linux kernel 体系结构 - [Linux]'/><author><name>陈浩</name><uri>http://www.blogger.com/profile/14506725069676093869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2923218862914453128.post-7272101336751875889</id><published>2007-10-27T02:27:00.001+08:00</published><updated>2007-10-27T02:29:44.066+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TCP'/><title type='text'>TCP window size (zz) - [Networking]</title><content type='html'>&lt;h2&gt;TCP window size (zz)&lt;span class="sort"&gt; - [&lt;a href="http://morningsun.blogbus.com/c1518201/"&gt;Networking&lt;/a&gt;]&lt;/span&gt;&lt;/h2&gt;                How many of you have notice that no matter you have a 100 Mb line you&lt;br /&gt;only get near 2 Mbps, well that is&lt;br /&gt;because the TCP window size is only of 32 kB or 64 kB on Linux (depends&lt;br /&gt;on distribution) and 8 kB on M$ Windows.&lt;br /&gt;&lt;br /&gt;The TCP window size is the amount of data that will be send on a&lt;br /&gt;connection before a host stops and waits&lt;br /&gt;for an acknowledgment. This is used by TCP to prevent congestion.&lt;br /&gt;Ideally it should be:&lt;br /&gt;&lt;br /&gt;        Window size = Bandwidth x round trip time&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;@@WARNING@@&lt;br /&gt;*    If your window size is too small, you won't use the network to it's&lt;br /&gt;full capacity&lt;br /&gt;*    If your window size is too big, you risk overloading the network&lt;br /&gt;and creating congestion and packet loss&lt;br /&gt;*    On a WAN, setting the TCP window size correctly plays a big part in&lt;br /&gt;getting good performance&lt;br /&gt;        (it can easily double performance or more)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The peak bandwidth of the link is typically expressed in Mbit/s. The&lt;br /&gt;round-trip delay for a link can be measured with traceroute, and for&lt;br /&gt;high-speed WAN&lt;br /&gt;links is typically between 10 msec and 100 msec. For a 60 msec, 120 Mbps&lt;br /&gt;path, the bandwidth*delay product would be 7200 kbit, or 900 kByte (kB).&lt;br /&gt;&lt;br /&gt;...so here is how to change the&lt;br /&gt;TCP Window size on Linux in order to achieve higher bandwidth.&lt;br /&gt;&lt;br /&gt;#cd /proc/sys/net/core&lt;br /&gt;#ls&lt;br /&gt;message_burst    netdev_max_backlog    rmem_default    wmem_default&lt;br /&gt;message_cost    optmem_max    rmem_max    wmem_max&lt;br /&gt;-------&lt;br /&gt;(The secret are on these files)&lt;br /&gt;/proc/sys/net/core/rmem_default   - default receive window&lt;br /&gt;/proc/sys/net/core/rmem_max       - maximum receive window&lt;br /&gt;/proc/sys/net/core/wmem_default  - default send window&lt;br /&gt;/proc/sys/net/core/wmem_max      - maximum send window&lt;br /&gt;--------&lt;br /&gt;# cat    wmem_default    wmem_max    rmem_default    rmem_max&lt;br /&gt;65535&lt;br /&gt;65535&lt;br /&gt;65535&lt;br /&gt;65535&lt;br /&gt;#&lt;br /&gt;(If you change these numbers you are changing the TCP window)&lt;br /&gt;&lt;br /&gt;The theorical values are 65535 on all of them because asume bandwidth of&lt;br /&gt;100&lt;br /&gt;Mbits/s and the round trip time was 5 msec, the TCP window should be&lt;br /&gt;&lt;br /&gt;(100x10^6) bytes/sec *  (5x10^-3) sec = 65000 bytes or 65 kilobytes&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;500x10^3 bits (65 kilobytes)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But imagine right now we (the UPR) have a DS3 (45Mbit/sec) with Sprint&lt;br /&gt;and the average&lt;br /&gt;round trip is 115 ms (do ping to anywhere outside and you will get&lt;br /&gt;higher numbers)&lt;br /&gt;&lt;br /&gt;So the computation will be:&lt;br /&gt;&lt;br /&gt;45 Mbit/sec * 115 ms&lt;br /&gt;    = 45e6 * 115e-3&lt;br /&gt;    = 5,175,000 bits / 8 / 1024&lt;br /&gt;    = 631 KBytes&lt;br /&gt;&lt;br /&gt;That means that our ideal TCP Window is 631 KBytes.&lt;br /&gt;# cat 646875 &gt; /proc/sys/net/core/wmem_max&lt;br /&gt;# cat 646875 &gt; /proc/sys/net/core/wmem_default&lt;br /&gt;# cat 646875 &gt; /proc/sys/net/core/rmem_max&lt;br /&gt;# cat 646875 &gt; /proc/sys/net/core/rmem_default&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Well, hope this works for you. Note that this is not using the Internet2&lt;br /&gt;link yet. Probably will&lt;br /&gt;require a much smaller TCP Window. Please let me know if you find any&lt;br /&gt;difference on performance.&lt;br /&gt;&lt;br /&gt;DISCLAIMER: These are teorical numbers and are not guaranty to work for&lt;br /&gt;everyone in the same way.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For M$ Windows 9x  users please refer to:&lt;br /&gt;    &lt;a href="http://moat.nlanr.net/Software/TCPtune/"&gt;http://moat.nlanr.net/Software/TCPtune/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;REFERENCES:&lt;br /&gt;&lt;a href="http://dast.nlanr.net/Articles/GettingStarted/TCP_window_size.html"&gt;http://dast.nlanr.net/Articles/GettingStarted/TCP_window_size.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://ncne.nlanr.net/research/tcp/testrig/"&gt;http://ncne.nlanr.net/research/tcp/testrig/&lt;/a&gt;&lt;br /&gt;A very useful presentation:&lt;br /&gt;    &lt;a href="http://ncne.nlanr.net/training/techs/1998/980128/talks/welch"&gt;http://ncne.nlanr.net/training/techs/1998/980128/talks/welch&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;General Info:&lt;br /&gt;&lt;a href="http://www.ncsa.uiuc.edu/People/vwelch/net_perf/tcp_windows.html"&gt;http://www.ncsa.uiuc.edu/People/vwelch/net_perf/tcp_windows.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.psc.edu/networking/perf_tune.html"&gt;http://www.psc.edu/networking/perf_tune.html&lt;/a&gt;  (outdated 1999 but useful)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ncsa.uiuc.edu/People/vwelch/net_perf_tools.htm"&gt;http://www.ncsa.uiuc.edu/People/vwelch/net_perf_tools.htm&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2923218862914453128-7272101336751875889?l=chenhao-nari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://morningsun.blogbus.com/logs/6893593.html' title='TCP window size (zz) - [Networking]'/><link rel='replies' type='application/atom+xml' href='http://chenhao-nari.blogspot.com/feeds/7272101336751875889/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2923218862914453128&amp;postID=7272101336751875889' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/7272101336751875889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/7272101336751875889'/><link rel='alternate' type='text/html' href='http://chenhao-nari.blogspot.com/2007/10/tcp-window-size-zz-networking.html' title='TCP window size (zz) - [Networking]'/><author><name>陈浩</name><uri>http://www.blogger.com/profile/14506725069676093869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2923218862914453128.post-1765003194686872557</id><published>2007-10-27T02:27:00.000+08:00</published><updated>2007-10-27T02:28:12.901+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>ORACLE 10g RAC failover and load balance configuration - [Database]</title><content type='html'>&lt;h2&gt;ORACLE 10g RAC failover and load balance configuration&lt;span class="sort"&gt; - [&lt;a href="http://morningsun.blogbus.com/c1544446/"&gt;Database&lt;/a&gt;]&lt;/span&gt;&lt;/h2&gt;                &lt;p&gt; Oracle 10g rac 始支持两个instance的failover和loadbalance。示例如下：&lt;/p&gt;&lt;p&gt;VMRACTEST.HF.COM=&lt;br /&gt;    (DESCRIPTION =&lt;br /&gt;      (ADDRESS = (PROTOCOL = TCP) (HOST = 172.16.209.47) (PORT = 1521))&lt;br /&gt;      (ADDRESS = (PROTOCOL = TCP) (HOST = 172.16.209.49) (PORT = 1521))&lt;br /&gt;        (LOAD_BALANCE = yes)&lt;br /&gt;        (CONNECT_DATA =&lt;br /&gt;            (SERVER = DEDICATED)&lt;br /&gt;            (SERVICE_NAME = vmractest.hf.com)&lt;br /&gt;        (FAILOVER_MODE =&lt;br /&gt;            (TYPE = SELECT)&lt;br /&gt;            (METHOD = BASIC)&lt;br /&gt;            (RETRIES = 180)&lt;br /&gt;            (DELAY = 5))&lt;br /&gt;        )&lt;br /&gt;    )&lt;/p&gt;&lt;p&gt;  如上配置，若使用oci client连接RAC则client将连接到172.16.209.47 或 172.16.209.49的任意一台实例上，假设我们连到了49上。TCP Connection状态为ESTABLISHED。当49的instance发生故障，该client端TCP连接状态变为Close_WAIT，不要 以为连接已断。当我们执行数据库操作时，oci将重连到47的TCP Connection&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2923218862914453128-1765003194686872557?l=chenhao-nari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://morningsun.blogbus.com/logs/7302595.html' title='ORACLE 10g RAC failover and load balance configuration - [Database]'/><link rel='replies' type='application/atom+xml' href='http://chenhao-nari.blogspot.com/feeds/1765003194686872557/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2923218862914453128&amp;postID=1765003194686872557' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/1765003194686872557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/1765003194686872557'/><link rel='alternate' type='text/html' href='http://chenhao-nari.blogspot.com/2007/10/oracle-10g-rac-failover-and-load.html' title='ORACLE 10g RAC failover and load balance configuration - [Database]'/><author><name>陈浩</name><uri>http://www.blogger.com/profile/14506725069676093869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2923218862914453128.post-3850725061104593278</id><published>2007-10-27T02:26:00.001+08:00</published><updated>2007-10-27T02:26:51.591+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TCP'/><title type='text'>TCP 粘包及分段研究 - [Networking]</title><content type='html'>&lt;h2&gt;TCP 粘包及分段研究&lt;span class="sort"&gt; - [&lt;a href="http://morningsun.blogbus.com/c1518201/"&gt;Networking&lt;/a&gt;]&lt;/span&gt;&lt;/h2&gt;                &lt;p&gt;这两天碰到一个TCP read buffer 满，而发送Zero window message 给Server， Server 在收到多次这样的message后断开该缓慢连接的问题。想到了几个问题，查证后特记录如下：&lt;/p&gt;&lt;p&gt;1. TCP Zero Window message 与 RST ACK：Zero Window message 通常在本地recieve buffer 满时发出，向server通知"已经不能再向我发数据了，已经处理不过来了"，server收到这样的notify则会暂停向该client发数据。长此 以往，有些防火墙的规则会发RST message将这些慢连接干掉。&lt;/p&gt;&lt;p&gt;2. TCP MSS 与 MTU 分段：MSS叫Maxitum Segment Size ，通常的实现就是按照MTU来的，因此MSS一般来说大小为1500-20-20=1460。如果应用层数据太大，大于一个MSS，则TCP将作分段处 理。MTU基于物理层而言，ethnet的MTU为1500，PPPoe为1492，上层的message大小如果大于MTU，则将在IP层被分片。有的 TCP报文为保证顺序要求，设置了Dont fragment 位，指示IP层不要分片，如果这段网络上的MTU &lt;&gt;&lt;p&gt;3. 阻塞和非阻塞套接字，阻塞套接字会将所有的data拷贝到发送缓冲区后才返回，也就是如果窗口为16K，要发送32k的数据返回时，至少有16K的数据已 经到达对端，还有部分数据在本地缓冲区内。如果为非阻塞模式，发送32K数据将马上返回，返回的nbyte小于32K，需要通过循环将所有数据发完。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2923218862914453128-3850725061104593278?l=chenhao-nari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://morningsun.blogbus.com/' title='TCP 粘包及分段研究 - [Networking]'/><link rel='replies' type='application/atom+xml' href='http://chenhao-nari.blogspot.com/feeds/3850725061104593278/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2923218862914453128&amp;postID=3850725061104593278' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/3850725061104593278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/3850725061104593278'/><link rel='alternate' type='text/html' href='http://chenhao-nari.blogspot.com/2007/10/tcp-networking.html' title='TCP 粘包及分段研究 - [Networking]'/><author><name>陈浩</name><uri>http://www.blogger.com/profile/14506725069676093869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2923218862914453128.post-1256834878946715325</id><published>2007-10-26T13:18:00.000+08:00</published><updated>2007-10-26T13:19:26.990+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>用jad 反编译jar文件</title><content type='html'>D:&gt;jar xvf test.jar&lt;br /&gt;&lt;br /&gt;D:&gt;md src&lt;br /&gt;&lt;br /&gt;D:&gt;jad -sjava -r -dsrc -ff -8 com**/*.class&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2923218862914453128-1256834878946715325?l=chenhao-nari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.csdn.net/jgku/archive/2006/02/16/600501.aspx' title='用jad 反编译jar文件'/><link rel='replies' type='application/atom+xml' href='http://chenhao-nari.blogspot.com/feeds/1256834878946715325/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2923218862914453128&amp;postID=1256834878946715325' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/1256834878946715325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/1256834878946715325'/><link rel='alternate' type='text/html' href='http://chenhao-nari.blogspot.com/2007/10/jad-jar.html' title='用jad 反编译jar文件'/><author><name>陈浩</name><uri>http://www.blogger.com/profile/14506725069676093869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2923218862914453128.post-25056582218873246</id><published>2007-09-29T17:31:00.000+08:00</published><updated>2007-09-29T17:32:22.383+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='qt'/><title type='text'>常见的几个Qt编程问题的处理</title><content type='html'>&lt;h1 id="subject_tpc" class="fl"&gt;常见的几个Qt编程问题的处理&lt;/h1&gt;          &lt;div dragover="true" class="tpc_content" id="read_tpc"&gt;１、如果在窗体关闭前自行判断是否可关闭&lt;br /&gt;答：重新实现这个窗体的closeEvent()函数，加入判断操作&lt;br /&gt;&lt;h6 class="quote"&gt;Quote:&lt;/h6&gt;&lt;blockquote&gt;&lt;br /&gt;void MainWindow::closeEvent(QCloseEvent *event)&lt;br /&gt;{&lt;br /&gt;       if (maybeSave())&lt;br /&gt;       {&lt;br /&gt;              writeSettings();&lt;br /&gt;              &lt;span style="color: blue;"&gt;event-&gt;accept();&lt;/span&gt;&lt;br /&gt;       }&lt;br /&gt;       else&lt;br /&gt;       {&lt;br /&gt;              &lt;span style="color: blue;"&gt;event-&gt;ignore();&lt;/span&gt;&lt;br /&gt;       }&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;２、如何用打开和保存文件对话&lt;br /&gt;答：使用QFileDialog&lt;br /&gt;&lt;h6 class="quote"&gt;Quote:&lt;/h6&gt;&lt;blockquote&gt;&lt;br /&gt;              &lt;span style="color: blue;"&gt;QString fileName = QFileDialog::getOpenFileName(this);&lt;br /&gt;              if (!fileName.isEmpty())&lt;/span&gt;&lt;br /&gt;              {&lt;br /&gt;                     loadFile(fileName);&lt;br /&gt;              }&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;h6 class="quote"&gt;Quote:&lt;/h6&gt;&lt;blockquote&gt;&lt;br /&gt;       &lt;span style="color: blue;"&gt;QString fileName = QFileDialog::getSaveFileName(this);&lt;br /&gt;       if (fileName.isEmpty())&lt;/span&gt;&lt;br /&gt;       {&lt;br /&gt;              return false;&lt;br /&gt;       }&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;３、如果创建Actions(可在菜单和工具栏里使用这些Action)&lt;br /&gt;答：&lt;br /&gt;&lt;h6 class="quote"&gt;Quote:&lt;/h6&gt;&lt;blockquote&gt;&lt;br /&gt;newAct = new QAction(QIcon(":/images/new.png"), tr("&amp;amp;New"), this);&lt;br /&gt;        newAct-&gt;setShortcut(tr("Ctrl+N"));&lt;br /&gt;        newAct-&gt;setStatusTip(tr("Create a new file"));&lt;br /&gt;        connect(newAct, SIGNAL(triggered()), this, SLOT(newFile()));&lt;br /&gt;&lt;br /&gt;        openAct = new QAction(QIcon(":/images/open.png"), tr("&amp;amp;Open..."), this);&lt;br /&gt;        openAct-&gt;setShortcut(tr("Ctrl+O"));&lt;br /&gt;        openAct-&gt;setStatusTip(tr("Open an existing file"));&lt;br /&gt;        connect(openAct, SIGNAL(triggered()), this, SLOT(open()));&lt;br /&gt;&lt;br /&gt;        saveAct = new QAction(QIcon(":/images/save.png"), tr("&amp;amp;Save"), this);&lt;br /&gt;        saveAct-&gt;setShortcut(tr("Ctrl+S"));&lt;br /&gt;        saveAct-&gt;setStatusTip(tr("Save the document to disk"));&lt;br /&gt;        connect(saveAct, SIGNAL(triggered()), this, SLOT(save()));&lt;br /&gt;&lt;br /&gt;        saveAsAct = new QAction(tr("Save &amp;amp;As..."), this);&lt;br /&gt;        saveAsAct-&gt;setStatusTip(tr("Save the document under a new name"));&lt;br /&gt;        connect(saveAsAct, SIGNAL(triggered()), this, SLOT(saveAs()));&lt;br /&gt;&lt;br /&gt;        exitAct = new QAction(tr("E&amp;amp;xit"), this);&lt;br /&gt;        exitAct-&gt;setShortcut(tr("Ctrl+Q"));&lt;br /&gt;        exitAct-&gt;setStatusTip(tr("Exit the application"));&lt;br /&gt;        connect(exitAct, SIGNAL(triggered()), this, SLOT(close()));&lt;br /&gt;&lt;br /&gt;        cutAct = new QAction(QIcon(":/images/cut.png"), tr("Cu&amp;amp;t"), this);&lt;br /&gt;        cutAct-&gt;setShortcut(tr("Ctrl+X"));&lt;br /&gt;        cutAct-&gt;setStatusTip(tr("Cut the current selection's contents to the "&lt;br /&gt;                                "clipboard"));&lt;br /&gt;        connect(cutAct, SIGNAL(triggered()), textEdit, SLOT(cut()));&lt;br /&gt;&lt;br /&gt;        copyAct = new QAction(QIcon(":/images/copy.png"), tr("&amp;amp;Copy"), this);&lt;br /&gt;        copyAct-&gt;setShortcut(tr("Ctrl+C"));&lt;br /&gt;        copyAct-&gt;setStatusTip(tr("Copy the current selection's contents to the "&lt;br /&gt;                                 "clipboard"));&lt;br /&gt;        connect(copyAct, SIGNAL(triggered()), textEdit, SLOT(copy()));&lt;br /&gt;&lt;br /&gt;        pasteAct = new QAction(QIcon(":/images/paste.png"), tr("&amp;amp;Paste"), this);&lt;br /&gt;        pasteAct-&gt;setShortcut(tr("Ctrl+V"));&lt;br /&gt;        pasteAct-&gt;setStatusTip(tr("Paste the clipboard's contents into the current "&lt;br /&gt;                                  "selection"));&lt;br /&gt;        connect(pasteAct, SIGNAL(triggered()), textEdit, SLOT(paste()));&lt;br /&gt;&lt;br /&gt;        aboutAct = new QAction(tr("&amp;amp;About"), this);&lt;br /&gt;        aboutAct-&gt;setStatusTip(tr("Show the application's About box"));&lt;br /&gt;        connect(aboutAct, SIGNAL(triggered()), this, SLOT(about()));&lt;br /&gt;&lt;br /&gt;        aboutQtAct = new QAction(tr("About &amp;amp;Qt"), this);&lt;br /&gt;        aboutQtAct-&gt;setStatusTip(tr("Show the Qt library's About box"));&lt;br /&gt;        connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt()));&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;４、如果创建主菜单&lt;br /&gt;答：采用上面的QAction的帮助，创建主菜单&lt;br /&gt;&lt;h6 class="quote"&gt;Quote:&lt;/h6&gt;&lt;blockquote&gt;&lt;br /&gt;       fileMenu = menuBar()-&gt;addMenu(tr("&amp;amp;File"));&lt;br /&gt;        fileMenu-&gt;addAction(newAct);&lt;br /&gt;        fileMenu-&gt;addAction(openAct);&lt;br /&gt;        fileMenu-&gt;addAction(saveAct);&lt;br /&gt;        fileMenu-&gt;addAction(saveAsAct);&lt;br /&gt;        fileMenu-&gt;addSeparator();&lt;br /&gt;        fileMenu-&gt;addAction(exitAct);&lt;br /&gt;&lt;br /&gt;        editMenu = menuBar()-&gt;addMenu(tr("&amp;amp;Edit"));&lt;br /&gt;        editMenu-&gt;addAction(cutAct);&lt;br /&gt;        editMenu-&gt;addAction(copyAct);&lt;br /&gt;        editMenu-&gt;addAction(pasteAct);&lt;br /&gt;&lt;br /&gt;        menuBar()-&gt;addSeparator();&lt;br /&gt;&lt;br /&gt;        helpMenu = menuBar()-&gt;addMenu(tr("&amp;amp;Help"));&lt;br /&gt;        helpMenu-&gt;addAction(aboutAct);&lt;br /&gt;        helpMenu-&gt;addAction(aboutQtAct);&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;５、如果创建工具栏&lt;br /&gt;答：采用上面的QAction的帮助，创建工具栏&lt;br /&gt;&lt;h6 class="quote"&gt;Quote:&lt;/h6&gt;&lt;blockquote&gt;&lt;br /&gt;       fileToolBar = addToolBar(tr("File"));&lt;br /&gt;        fileToolBar-&gt;addAction(newAct);&lt;br /&gt;        fileToolBar-&gt;addAction(openAct);&lt;br /&gt;        fileToolBar-&gt;addAction(saveAct);&lt;br /&gt;&lt;br /&gt;        editToolBar = addToolBar(tr("Edit"));&lt;br /&gt;        editToolBar-&gt;addAction(cutAct);&lt;br /&gt;        editToolBar-&gt;addAction(copyAct);&lt;br /&gt;        editToolBar-&gt;addAction(pasteAct);&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;６、如何使用配置文件保存配置&lt;br /&gt;答：使用QSettings类&lt;br /&gt;&lt;h6 class="quote"&gt;Quote:&lt;/h6&gt;&lt;blockquote&gt;&lt;br /&gt;       QSettings settings("Trolltech", "Application Example");&lt;br /&gt;        QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint();&lt;br /&gt;        QSize size = settings.value("size", QSize(400, 400)).toSize();&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;h6 class="quote"&gt;Quote:&lt;/h6&gt;&lt;blockquote&gt;&lt;br /&gt;      QSettings settings("Trolltech", "Application Example");&lt;br /&gt;        settings.setValue("pos", pos());&lt;br /&gt;        settings.setValue("size", size());&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;７、如何使用警告、信息等对话框&lt;br /&gt;答：使用QMessageBox类的静态方法&lt;br /&gt;&lt;h6 class="quote"&gt;Quote:&lt;/h6&gt;&lt;blockquote&gt;&lt;br /&gt;int ret = QMessageBox::warning(this, tr("Application"),&lt;br /&gt;                         tr("The document has been modified.\n"&lt;br /&gt;                            "Do you want to save your changes?"),&lt;br /&gt;                         QMessageBox::Yes | QMessageBox::Default,&lt;br /&gt;                         QMessageBox::No,&lt;br /&gt;                         QMessageBox::Cancel | QMessageBox::Escape);&lt;br /&gt;            if (ret == QMessageBox::Yes)&lt;br /&gt;                return save();&lt;br /&gt;            else if (ret == QMessageBox::Cancel)&lt;br /&gt;                return false;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;８、如何使通用对话框中文化&lt;br /&gt;答：对话框的中文化&lt;br /&gt;比 如说，QColorDialog的与文字相关的部分，主要在qcolordialog.cpp文件中，我们可以从qcolordialog.cpp用 lupdate生成一个ts文件，然后用自定义这个ts文件的翻译，再用lrelease生成一个.qm文件，当然了，主程序就要改变要支持多国语言了， 使用这个.qm文件就可以了。&lt;br /&gt;&lt;br /&gt;另外，还有一个更快的方法，在源代码解开后有一个目录translations，下面有一些.ts, .qm文件，我们拷贝一个：&lt;br /&gt;&lt;h6 class="quote"&gt;Quote:&lt;/h6&gt;&lt;blockquote&gt;&lt;br /&gt;cp src/translations/qt_untranslated.ts ./qt_zh_CN.ts&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;然 后，我们就用Linguist打开这个qt_zh_CN.ts，进行翻译了，翻译完成后，保存后，再用lrelease命令生成qt_zh_CN.qm， 这样，我们把它加入到我们的qt project中，那些系统的对话框，菜单等等其它的默认是英文的东西就能显示成中文了。&lt;br /&gt;&lt;br /&gt;９、在Windows下Qt里为什么没有终端输出？&lt;br /&gt;答：把下面的配置项加入到.pro文件中&lt;br /&gt;&lt;h6 class="quote"&gt;Quote:&lt;/h6&gt;&lt;blockquote&gt;&lt;br /&gt;win32:CONFIG += console&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;10、Qt 4 for X11 OpenSource版如何静态链接？&lt;br /&gt;答：编译安装的时候加上-static选项&lt;br /&gt;&lt;h6 class="quote"&gt;Quote:&lt;/h6&gt;&lt;blockquote&gt;./configure -static   ／／一定要加static选项&lt;br /&gt;gmake&lt;br /&gt;gmake install&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;然后，在Makefile文件中加 static 选项或者在.pro文件中加上QMAKE_LFLAGS += -static，就可以连接静态库了。&lt;br /&gt;&lt;br /&gt;11、想在源代码中直接使用中文，而不使用tr()函数进行转换，怎么办？&lt;br /&gt;答：在main函数中加入下面三条语句，但并不提倡&lt;br /&gt;&lt;h6 class="quote"&gt;Quote:&lt;/h6&gt;&lt;blockquote&gt;    QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));&lt;br /&gt;QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));&lt;br /&gt;QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;或者&lt;br /&gt;&lt;h6 class="quote"&gt;Quote:&lt;/h6&gt;&lt;blockquote&gt;    QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));&lt;br /&gt;QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));&lt;br /&gt;QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;使用GBK还是使用UTF-8，依源文件中汉字使用的内码而定&lt;br /&gt;这样，就可在源文件中直接使用中文，比如：&lt;br /&gt;&lt;h6 class="quote"&gt;Quote:&lt;/h6&gt;&lt;blockquote&gt;QMessageBox::information(NULL, "信息", "关于本软件的演示信息", QMessageBox::Ok, QMessageBox::NoButtons);&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;12、为什么将开发的使用数据库的程序发布到其它机器就连接不上数据库？&lt;br /&gt;答：这是由于程序找不到数据库插件而致，可照如下解决方法：&lt;br /&gt;在main函数中加入下面语句：&lt;br /&gt;&lt;h6 class="quote"&gt;Quote:&lt;/h6&gt;&lt;blockquote&gt;QApplication::addLibraryPath(strPluginsPath");&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;strPluginsPath是插件所在目录，比如此目录为/myapplication/plugins&lt;br /&gt;则将需要的sql驱动，比如qsqlmysql.dll, qsqlodbc.dll或对应的.so文件放到&lt;br /&gt;/myapplication/plugins/sqldrivers/&lt;br /&gt;目录下面就行了&lt;br /&gt;这是一种解决方法，还有一种通用的解决方法，即在可执行文件目录下写qt.conf文件，把系统相关的一些目录配置写到qt.conf文件里，详细情况情参考Qt Document Reference里的qt.conf部分&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;13、如何创建QT使用的DLL(.so)以及如何使用此DLL(.so)&lt;br /&gt;答：创建DLL时其工程使用lib模板&lt;br /&gt;&lt;h6 class="quote"&gt;Quote:&lt;/h6&gt;&lt;blockquote&gt;TEMPLATE=lib&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;而源文件则和使用普通的源文件一样，注意把头文件和源文件分开，因为在其它程序使用此DLL时需要此头文件&lt;br /&gt;在使用此DLL时，则在此工程源文件中引入DLL头文件，并在.pro文件中加入下面配置项：&lt;br /&gt;&lt;h6 class="quote"&gt;Quote:&lt;/h6&gt;&lt;blockquote&gt;LIBS += -Lyourdlllibpath -lyourdlllibname&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Windows下和Linux下同样（Windows下生成的DLL文件名为yourdlllibname.dll而在Linux下生成的为libyourdlllibname.so&lt;br /&gt;&lt;br /&gt;14、如何启动一个外部程序&lt;br /&gt;答：可使用QProcess和QThread这两个类结合使用的方法来处理，以防止在主线程中调用而导致阻塞的情况&lt;br /&gt;先从QThread继承一个类，重新实现run()函数：&lt;br /&gt;&lt;h6 class="quote"&gt;Quote:&lt;/h6&gt;&lt;blockquote&gt;&lt;br /&gt;class MyThread : public QThread&lt;br /&gt;{&lt;br /&gt;public:&lt;br /&gt;     void run();&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;void MyThread::run()&lt;br /&gt;{&lt;br /&gt;    QProcess::execute("notepad.exe");&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;这样，在使用的时候则可定义一个MyThread类型的成员变量，使用时调用其start()方法：&lt;br /&gt;&lt;h6 class="quote"&gt;Quote:&lt;/h6&gt;&lt;blockquote&gt;&lt;br /&gt;class ...............&lt;br /&gt;{...........&lt;br /&gt;MyThread thread;&lt;br /&gt;............&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;.....................&lt;br /&gt;thread.start();&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;15、如何打印报表&lt;br /&gt;答： Qt目前对报表打印支持的库还很少，不过有种变通的方法，就是使用XML+XSLT+XSL-FO来进行报表设计，XML输出数据，用XSLT将XML数 据转换为XSL-FO格式的报表，由于现在的浏览器不直接支持XSL-FO格式的显示，所以暂时可用工具(Apache FOP, Java做的)将XSL-FO转换为PDF文档来进行打印，转换和打印由FOP来做，生成XSL-FO格式的报表可以由Qt来生成，也可以由其它内容转换 过来，比如有工具(html2fo)将HTML转换为XSL-FO。&lt;br /&gt;&lt;br /&gt;16、如何在系统托盘区显示图标&lt;br /&gt;答：在4.2及其以上版本中使用QSystemTrayIcon类来实现&lt;br /&gt;&lt;br /&gt;17、怎样将日志输出到文件中&lt;br /&gt;答：（myer提供）&lt;br /&gt;&lt;h6 class="quote"&gt;Quote:&lt;/h6&gt;&lt;blockquote&gt;&lt;br /&gt;void myMessageOutput( QtMsgType type, const char *msg )&lt;br /&gt;{&lt;br /&gt;    switch ( type ) {&lt;br /&gt;        case QtDebugMsg:&lt;br /&gt;            //写入文件；&lt;br /&gt;            break;&lt;br /&gt;        case QtWarningMsg:&lt;br /&gt;            break;&lt;br /&gt;        case QtFatalMsg:&lt;br /&gt;            abort();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int main( int argc, char** argv )&lt;br /&gt;{&lt;br /&gt;    QApplication app( argc, argv );&lt;br /&gt;    qInstallMsgHandler( myMessageOutput );&lt;br /&gt;    ......&lt;br /&gt;    return app.exec();&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;qDebug(), qWarning(), qFatal()分别对应以上三种type。&lt;br /&gt;&lt;br /&gt;18、如何将图像编译到可执行程序中去&lt;br /&gt;答：使用.qrc文件&lt;br /&gt;写.qrc文件，例如：&lt;br /&gt;res.qrc&lt;br /&gt;&lt;h6 class="quote"&gt;Quote:&lt;/h6&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;!DOCTYPE RCC&gt;&lt;rcc version="1.0"&gt;&lt;br /&gt;&lt;qresource&gt;&lt;br /&gt;     &lt;file&gt;images/copy.png&lt;/file&gt;&lt;br /&gt;     &lt;file&gt;images/cut.png&lt;/file&gt;&lt;br /&gt;     &lt;file&gt;images/new.png&lt;/file&gt;&lt;br /&gt;     &lt;file&gt;images/open.png&lt;/file&gt;&lt;br /&gt;     &lt;file&gt;images/paste.png&lt;/file&gt;&lt;br /&gt;     &lt;file&gt;images/save.png&lt;/file&gt;&lt;br /&gt;&lt;/qresource&gt;&lt;br /&gt;&lt;/rcc&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;然后在.pro中加入下面代码：&lt;br /&gt;&lt;h6 class="quote"&gt;Quote:&lt;/h6&gt;&lt;blockquote&gt;&lt;br /&gt;RESOURCES     = res.qrc&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;在程序中使用：&lt;br /&gt;&lt;h6 class="quote"&gt;Quote:&lt;/h6&gt;&lt;blockquote&gt;&lt;br /&gt;...&lt;br /&gt;:images/copy.png&lt;br /&gt;...&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;19、如何制作不规则形状的窗体或部件&lt;br /&gt;答：请参考下面的帖子&lt;br /&gt;&lt;a dragover="true" href="http://www.qtcn.org/bbs/read.php?tid=8681" target="_blank"&gt;http://www.qtcn.org/bbs/read.php?tid=8681&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2923218862914453128-25056582218873246?l=chenhao-nari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.qtcn.org/bbs/read.php?tid=1324' title='常见的几个Qt编程问题的处理'/><link rel='replies' type='application/atom+xml' href='http://chenhao-nari.blogspot.com/feeds/25056582218873246/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2923218862914453128&amp;postID=25056582218873246' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/25056582218873246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/25056582218873246'/><link rel='alternate' type='text/html' href='http://chenhao-nari.blogspot.com/2007/09/qt.html' title='常见的几个Qt编程问题的处理'/><author><name>陈浩</name><uri>http://www.blogger.com/profile/14506725069676093869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2923218862914453128.post-2438630830509967635</id><published>2007-09-28T20:14:00.000+08:00</published><updated>2007-09-28T20:19:30.644+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><title type='text'>TinyXml学习笔记</title><content type='html'>&lt;a href="http://blog.csdn.net/KyosukeNo1/archive/2006/07/02/866491.aspx"&gt;TinyXml学习笔记&lt;/a&gt;  &lt;script src="http://blog.csdn.net/count.aspx?ID=866491&amp;amp;Type=Rank"&gt;&lt;/script&gt;&lt;span title="文章指数:72"&gt;&lt;img src="http://blog.csdn.net/images/star.gif" border="0" /&gt;&lt;img src="http://blog.csdn.net/images/star.gif" border="0" /&gt;&lt;img src="http://blog.csdn.net/images/star.gif" border="0" /&gt;&lt;img src="http://blog.csdn.net/images/star_half.gif" border="0" /&gt;&lt;/span&gt;  &lt;img src="http://blog.csdn.net/images/ask.gif" alt="CSDN Blog推出文章指数概念，文章指数是对Blog文章综合评分后推算出的，综合评分项分别是该文章的点击量，回复次数，被网摘收录数量，文章长度和文章类型；满分100，每月更新一次。" title="CSDN Blog推出文章指数概念，文章指数是对Blog文章综合评分后推算出的，综合评分项分别是该文章的点击量，回复次数，被网摘收录数量，文章长度和文章类型；满分100，每月更新一次。" border="0" /&gt;     &lt;div class="postText"&gt;    &lt;p style="text-align: left;" class="MsoNormal" align="left"&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;裕作小记：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;这几天在埋头写自己的&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;3D&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;文件浏览器（稍后发布），突发奇想的要把自己的内部格式转化成&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;XML&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;，于是，把以前在研究所时用过的&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;ExPat&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;翻了出来。&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt; ExPat&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;是基于事件的&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;XML&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;解释器，速度挺快的，但结构方面有点不敢恭维－－当年写配置文件的导出导入部分花了我足足&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;1&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;个星期！而且由于它是基于事件发&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt; &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;生的次序（&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;SAX&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;），似乎有时会发生一些无法控制的情况－－例如进入某&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;Level&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;后忘了记录，结果&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;……&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;后面的程序全部死掉！这时想起同事之前推荐的&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt; TinyXML&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;，结果&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;……&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;用了不到&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;3&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;小时就把我的&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;3D&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;格式导出来了～～呵呵。以下是一篇转贴的&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TinyXML&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;基础，稍后我会写一篇&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TinyXML&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;的实战例&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt; &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;子，敬请留意&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt; :-)&lt;br /&gt;&lt;br /&gt;PS&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;：由于没找到正式的出处，所以把全文引用如下，并没有写上引用出处－－如果哪位朋友知道，请告知在下。&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－&lt;/span&gt;&lt;span lang="EN-AU"&gt;&lt;br /&gt;&lt;br /&gt; &lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TinyXml&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;学习笔记&lt;/span&gt; &lt;span style="font-size: 12pt; font-family: &amp;quot;Arial Unicode MS&amp;quot;;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 12pt; text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;张弛&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;&lt;zhangchi@china.&lt;span class="grame"&gt;com&lt;/span&gt;&gt;&lt;br /&gt; &lt;!--[if !supportLineBreakNewLine]--&gt;&lt;br /&gt; &lt;!--[endif]--&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2 style="margin-left: 21pt; text-indent: -21pt;"&gt;&lt;span style="font-size: 10pt;"&gt;一、&lt;/span&gt;&lt;span style="font-size: 7pt; font-family: &amp;quot;Times New Roman&amp;quot;; font-weight: normal;" lang="EN-US"&gt;      &lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;TinyXml&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 黑体;"&gt;的特点&lt;/span&gt;&lt;/h2&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TinyXml&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;是一个基于&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;DOM&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;模型的、非验证的轻量级&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;C++&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;解释器。&lt;/span&gt;&lt;/p&gt;&lt;h3 style="margin-left: 21pt; text-indent: -21pt;"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;1.&lt;/span&gt;&lt;span style="font-size: 7pt; font-family: &amp;quot;Times New Roman&amp;quot;; font-weight: normal;" lang="EN-US"&gt;      &lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;SAX&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;和&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;DOM&lt;/span&gt;&lt;/h3&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;目前&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;XML&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;的解析主要有两大模型：&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;SAX&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;和&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;DOM&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;。&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;其中&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;SAX&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;是基于事件的，其基本工作流程是分析&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;XML&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;文档，当发现了一个新的元素时，产生一个对应事件，并调用相应的用户处理函数。这种方式占用内存少，速度快，但用户程序相应得会比较复杂。&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;而&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;DOM&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;（文档对象模型），则是在分析时，一次性的将整个&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;XML&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;文档进行分析，并在内存中形成对应的树结构，同时，向用户提供一系列的接口来访问和编辑该树结构。这种方式占用内存大，速度往往慢于&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;SAX&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;，但可以给用户提供一个面向对象的访问接口，对用户更为友好。&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;另据说，一些同时提供了&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;SAX&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;和&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;DOM&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;接口的库，是在底层先实现&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;SAX&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;，再在&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;SAX&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;的基础上实现&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;DOM&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;。&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;目前我知道的&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;XML&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;解析库有下面几个：&lt;/span&gt;&lt;/p&gt;&lt;div align="center"&gt;&lt;table style="border-collapse: collapse;" border="0" cellpadding="0" cellspacing="0"&gt;    &lt;tbody&gt;        &lt;tr&gt;            &lt;td style="border: 1pt solid windowtext; padding: 0cm 5.4pt;" valign="top"&gt;            &lt;p style="" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;名称&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Arial Unicode MS&amp;quot;;" lang="EN-AU"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;/td&gt;            &lt;td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt;" valign="top"&gt;            &lt;p style="" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;访问接口&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Arial Unicode MS&amp;quot;;" lang="EN-AU"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;/td&gt;            &lt;td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt;" valign="top"&gt;            &lt;p style="" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;是否支持验证&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Arial Unicode MS&amp;quot;;" lang="EN-AU"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;/td&gt;            &lt;td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt;" valign="top"&gt;            &lt;p style="" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;备注&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Arial Unicode MS&amp;quot;;" lang="EN-AU"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;/td&gt;        &lt;/tr&gt;        &lt;tr&gt;            &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt;" valign="top"&gt;            &lt;p style="" class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;Expat&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Arial Unicode MS&amp;quot;;" lang="EN-AU"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;/td&gt;            &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt;" valign="top"&gt;            &lt;p style="" class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;SAX/Local&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Arial Unicode MS&amp;quot;;" lang="EN-AU"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;/td&gt;            &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt;" valign="top"&gt;            &lt;p style="" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;不清楚&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Arial Unicode MS&amp;quot;;" lang="EN-AU"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;/td&gt;            &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt;" valign="top"&gt;            &lt;p style="" class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;Local&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;指它还有一套自己访问模型&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Arial Unicode MS&amp;quot;;" lang="EN-AU"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;/td&gt;        &lt;/tr&gt;        &lt;tr&gt;            &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt;" valign="top"&gt;            &lt;p style="" class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;LibXML2&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Arial Unicode MS&amp;quot;;" lang="EN-AU"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;/td&gt;            &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt;" valign="top"&gt;            &lt;p style="" class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;SAX/DOM&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Arial Unicode MS&amp;quot;;" lang="EN-AU"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;/td&gt;            &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt;" valign="top"&gt;            &lt;p style="" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;是&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Arial Unicode MS&amp;quot;;" lang="EN-AU"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;/td&gt;            &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt;" valign="top"&gt;            &lt;p style="margin: 0cm 0cm 0.0001pt;"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;/td&gt;        &lt;/tr&gt;        &lt;tr&gt;            &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt;" valign="top"&gt;            &lt;p style="" class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TinyXml&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Arial Unicode MS&amp;quot;;" lang="EN-AU"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;/td&gt;            &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt;" valign="top"&gt;            &lt;p style="" class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;DOM&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Arial Unicode MS&amp;quot;;" lang="EN-AU"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;/td&gt;            &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt;" valign="top"&gt;            &lt;p style="" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;否&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Arial Unicode MS&amp;quot;;" lang="EN-AU"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;/td&gt;            &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt;" valign="top"&gt;            &lt;p style="margin: 0cm 0cm 0.0001pt;"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;/td&gt;        &lt;/tr&gt;        &lt;tr&gt;            &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt;" valign="top"&gt;            &lt;p style="" class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;XML4C&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Arial Unicode MS&amp;quot;;" lang="EN-AU"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;/td&gt;            &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt;" valign="top"&gt;            &lt;p style="" class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;SAX/DOM&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Arial Unicode MS&amp;quot;;" lang="EN-AU"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;/td&gt;            &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt;" valign="top"&gt;            &lt;p style="" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;是&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Arial Unicode MS&amp;quot;;" lang="EN-AU"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;/td&gt;            &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt;" valign="top"&gt;            &lt;p style="" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;和&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;Xerces-C&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;是一家，不过用了&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;ICU&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;，国际化似乎更好&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Arial Unicode MS&amp;quot;;" lang="EN-AU"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;/td&gt;        &lt;/tr&gt;        &lt;tr&gt;            &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt;" valign="top"&gt;            &lt;p style="" class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;Xerces-C&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Arial Unicode MS&amp;quot;;" lang="EN-AU"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;/td&gt;            &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt;" valign="top"&gt;            &lt;p style="" class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;SAX/DOM&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Arial Unicode MS&amp;quot;;" lang="EN-AU"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;/td&gt;            &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt;" valign="top"&gt;            &lt;p style="" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;是&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Arial Unicode MS&amp;quot;;" lang="EN-AU"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;/td&gt;            &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt;" valign="top"&gt;            &lt;p style="margin: 0cm 0cm 0.0001pt;"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;/td&gt;        &lt;/tr&gt;        &lt;tr&gt;            &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt;" valign="top"&gt;            &lt;p style="" class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;XML Booster&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Arial Unicode MS&amp;quot;;" lang="EN-AU"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;/td&gt;            &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt;" valign="top"&gt;            &lt;p style="" class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;Local&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Arial Unicode MS&amp;quot;;" lang="EN-AU"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;/td&gt;            &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt;" valign="top"&gt;            &lt;p style="" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;不清楚&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Arial Unicode MS&amp;quot;;" lang="EN-AU"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;/td&gt;            &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt;" valign="top"&gt;            &lt;p style="" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;这个库不是特别了解，好像是类似&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;yacc&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;那样，可以生成一个特定的解析器，估计效率应该很高（看名字也像）。&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Arial Unicode MS&amp;quot;;" lang="EN-AU"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;/td&gt;        &lt;/tr&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style="margin: 0cm 0cm 0.0001pt;"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3 style="margin-left: 21pt; text-indent: -21pt;"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;2.&lt;/span&gt;&lt;span style="font-size: 7pt; font-family: &amp;quot;Times New Roman&amp;quot;; font-weight: normal;" lang="EN-US"&gt;      &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;验证和非验证&lt;/span&gt;&lt;/h3&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;对于一个特定的&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;XML&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;文档而言，其正确性分为两个层次。首先是其格式应该符合&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;XML&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;的基本格式要求，比如第一行要有声明，标签的嵌套层次必须前后一致等等，符合这些要求的文件，就是一个合格的&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;XML&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;文件，称作&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;well-formatted&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;。但除此之外，一个&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;XML&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;文档因其内容的不同还必须在语义上符合相应的标准，这些标准由相应的&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;DTD&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;文件或者&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;Schema&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;文件来定义，符合了这些定义要求的&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;XML&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;文件，称作&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;valid&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;。&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;因此，解析器也分为两种，一种是验证的，即会跟据&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;XML&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;文件中的声明，用相应的&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;DTD&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;文件对&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;XML&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;文件进行校验，检查它是否满足&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;DTD&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;文件的要求。另一种是忽略&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;DTD&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;文件，只要基本格式正确，就可以进行解析。&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;就我所知，验证的解析器通常都是比较重量级的。&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TinyXml&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;不支持验证，但是体积很小，用在解析格式较为简单的&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;XML&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;文件，比如配置文件时，特别的合适。&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span lang="EN-AU"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2 style="margin-left: 21pt; text-indent: -21pt;"&gt;&lt;span style="font-size: 10pt;"&gt;二、&lt;/span&gt;&lt;span style="font-size: 7pt; font-family: &amp;quot;Times New Roman&amp;quot;; font-weight: normal;" lang="EN-US"&gt;      &lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;TinyXml&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 黑体;"&gt;的构建和使用&lt;/span&gt;&lt;/h2&gt;&lt;h3 style="margin-left: 21pt; text-indent: -21pt;"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;1.&lt;/span&gt;&lt;span style="font-size: 7pt; font-family: &amp;quot;Times New Roman&amp;quot;; font-weight: normal;" lang="EN-US"&gt;      &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;获取&lt;/span&gt;&lt;/h3&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TinyXml&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;首页在&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;&lt;a href="http://www.grinninglizard.com/tinyxml/index.html"&gt;http://www.grinninglizard.com/tinyxml/index.html&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;，从这里可以找到最新版本的源代码，目前的版本是&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;2.3.4&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;。&lt;/span&gt;&lt;/p&gt;&lt;h3 style="margin-left: 21pt; text-indent: -21pt;"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;2.&lt;/span&gt;&lt;span style="font-size: 7pt; font-family: &amp;quot;Times New Roman&amp;quot;; font-weight: normal;" lang="EN-US"&gt;      &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;构建&lt;/span&gt;&lt;/h3&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TinyXml&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;在构建时可以选择是否支持&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;STL&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;，选择的话，则可以使用&lt;/span&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;std::string&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;，所以通常应该打开这个选项。&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;在&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;Windows&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;上，&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TinyXml&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;的源码包里提供了&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;VC6&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;的工程文件，直接用它就可以生成两个静态库（带&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;STL&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;和不带&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;STL&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;），非常容易。唯一需要注意的是，默认生成的库是单线程的，如果用在多线程的项目中，需要改动一下配置，生成相应的多线程库。&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;在&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;Unix&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;平台上，&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TinyXml&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;的源码包里只提供了一个&lt;/span&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;Makefile&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;，对于典型的&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;Linux&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;系统，或装了&lt;/span&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;gcc&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;和&lt;/span&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;gmake&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;的其他&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;Unix&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;，这个&lt;/span&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;Makefile&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;足够用了，我在&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;RH9&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;和&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;RHEL4&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;上测试，简单的&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;make&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;就成功了。需要注意的有以下几点：默认的编译是不支持&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;STL&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;的，可以通过编辑&lt;/span&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;Makefile&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TINYXML_USE_STL := NO&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;那一行，把&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;NO&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;改成&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;YES&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;就可以支持&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;STL&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;了；还有默认只生成了一个测试程序，没有生成任何库，如果要生成静态库的话，可以用&lt;/span&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;ar&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;命令，将生成的几个目标文件打包就行了，如果要生成动态库，则需要加上&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;-&lt;span class="spelle"&gt;fpic&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;参数重新编译。&lt;/span&gt;&lt;/p&gt;&lt;h3 style="margin-left: 21pt; text-indent: -21pt;"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;3.&lt;/span&gt;&lt;span style="font-size: 7pt; font-family: &amp;quot;Times New Roman&amp;quot;; font-weight: normal;" lang="EN-US"&gt;      &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;使用&lt;/span&gt;&lt;/h3&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;构建了相应的库之后，在使用了它们的工程中，只要在连接时把他们连上就行了。需要注意的是，如果需要&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;STL&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;支持，在编译用到了&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TinyXml&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;的文件时，需要定义一个宏&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TIXML_USE_STL&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;，对&lt;/span&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;gcc&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;，可以使用参数&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;-DTIXML_USE_STL&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;，对&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;cl.exe&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;（&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;VC&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;），可以使用参数&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;/DTIXML_USE_STL&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;，如果嫌麻烦，可以直接定义在&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt; &lt;span class="spelle"&gt;&lt;span lang="EN-AU"&gt;tinyxml.h&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;文件里。&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 12pt; text-indent: 21pt;" class="MsoNormal"&gt;&lt;span lang="EN-AU"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2 style="margin-left: 21pt; text-indent: -21pt;"&gt;&lt;span style="font-size: 10pt;"&gt;三、&lt;/span&gt;&lt;span style="font-size: 7pt; font-family: &amp;quot;Times New Roman&amp;quot;; font-weight: normal;" lang="EN-US"&gt;      &lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;TinyXml&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 黑体;"&gt;的编程模型&lt;/span&gt;&lt;/h2&gt;&lt;h3 style="margin-left: 21pt; text-indent: -21pt;"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;1.&lt;/span&gt;&lt;span style="font-size: 7pt; font-family: &amp;quot;Times New Roman&amp;quot;; font-weight: normal;" lang="EN-US"&gt;      &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;类之间的关系&lt;/span&gt;&lt;/h3&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TinyXml&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;实现的时&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;DOM&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;访问模型，因此提供了一系列的类对应&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;XML&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;文件中的各个节点。&lt;span class="grame"&gt;主要类间的&lt;/span&gt;关系如下图所示：&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-family: 宋体;" lang="EN-AU"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shapetypeid="_x0000_t75" coordsize="21600,21600" spt="75" preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;&lt;v:stroke joinstyle="miter"&gt;&lt;v:formulas&gt;&lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;v:f eqn="sum @0 1 0"&gt;&lt;v:f eqn="sum 0 0 @1"&gt;&lt;v:f eqn="prod @2 1 2"&gt;&lt;v:f eqn="prod @3 21600 pixelWidth"&gt;&lt;v:f eqn="prod @3 21600 pixelHeight"&gt;&lt;v:f eqn="sum @0 0 1"&gt;&lt;v:f eqn="prod @6 1 2"&gt;&lt;v:f eqn="prod @7 21600 pixelWidth"&gt;&lt;v:f eqn="sum @8 21600 0"&gt;&lt;v:f eqn="prod @7 21600 pixelHeight"&gt;&lt;v:f eqn="sum @10 21600 0"&gt;&lt;/v:formulas&gt;&lt;v:path extrusionok="f" gradientshapeok="t" connecttype="rect"&gt;&lt;o:lock ext="edit" aspectratio="t"&gt;&lt;/v:shapetype&gt;&lt;v:shape id="_x0000_i1025" type="#_x0000_t75" alt="类结构图" style="'width:523.5pt;height:102pt'"&gt;&lt;v:imagedata src="file:///C:/DOCUME~1/Yusaku/LOCALS~1/Temp/msoclip1/01/clip_image001.gif" href="http://www.grinninglizard.com/tinyxmldocs/classTiXmlNode.png"&gt;&lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img shapes="_x0000_i1025" alt="类结构图" src="file:///C:/DOCUME%7E1/Yusaku/LOCALS%7E1/Temp/msoclip1/01/clip_image001.gif" border="0" height="136" width="698" /&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TiXmlBase&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;：其他类的基类，是个抽象类&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TiXmlNode&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;：表示一个节点，包含节点的一般方法，如&lt;span class="grame"&gt;访问自&lt;/span&gt;节点、兄弟节点、编辑自身、编辑子节电&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TiXmlDocument&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;：表示整个&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;XML&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;文档，不对应其中某个特定的节点。&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TiXmlElement&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;：表示元素节点，可以包含子节点和&lt;/span&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TiXmlAttribute&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TiXmlComment&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;：表示注释&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TiXmlDeclaration&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;：表示声明&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TiXmlText&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;：表示文本节点&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TiXmlUnknown&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;：表示未知节点，通常是出错了&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TiXmlAttribute&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;：表示一个元素的属性&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;下面是一个简单的例子：&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span class="grame"&gt;&lt;span style="font-size: 10pt; color: blue;" lang="EN-AU"&gt;&lt;?xml&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; color: blue;" lang="EN-AU"&gt; version="1.0" encoding="utf-8" ?&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; color: blue;" lang="EN-AU"&gt;&lt;!-This is only a sample--&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; color: blue;" lang="EN-AU"&gt;&lt;&lt;span class="grame"&gt;book&lt;/span&gt;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; color: blue;" lang="EN-AU"&gt;       &lt;&lt;span class="grame"&gt;name&gt;&lt;/span&gt;TinyXml How To&lt;/name&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; color: blue;" lang="EN-AU"&gt;       &lt;price unit="”RMB”"&gt;20&lt;/price&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; color: blue;" lang="EN-AU"&gt;       &lt;&lt;span class="grame"&gt;description&gt;&lt;/span&gt;Some words…&lt;/description&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; color: blue;" lang="EN-AU"&gt;&lt;/ book &gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;整个文档，对应&lt;/span&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TiXmlDocument&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;book,name,price&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;, description&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;，都对应&lt;/span&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TiXmlElement&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;第一行对应一个&lt;/span&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TiXmlDeclaration&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;第二行对应一个&lt;/span&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TiXmlComment&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;“TinyXml How To”&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;对应一个&lt;/span&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TiXmlText&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;unit&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;则是&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;price&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;的一个&lt;/span&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TiXmlAttribute&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;这些类与&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;XML&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;文件中的相应元素都有很好的对应关系，因此相信参照&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TinyXml&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;的文档，可以很容易的掌握各个方法的使用。&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0cm 0cm 0.0001pt;"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3 style="margin-left: 21pt; text-indent: -21pt;"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;2.&lt;/span&gt;&lt;span style="font-size: 7pt; font-family: &amp;quot;Times New Roman&amp;quot;; font-weight: normal;" lang="EN-US"&gt;      &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;需要注意的问题&lt;/span&gt;&lt;/h3&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;各类之间的转换&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;由于各个&lt;span class="grame"&gt;节点类都从&lt;/span&gt;&lt;/span&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TiXmlNode&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;继承，在使用时常常需要将&lt;/span&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TiXmlNode&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;*&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;类型的指针转换为其派生类的指针，在进行这种转换时，应该首先使用由&lt;/span&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TiXmlNode&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;类提供的一系列转换函数，如&lt;/span&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;ToElement&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;(void)&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;，而不是&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;c++&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;dynamic_cast&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0cm 0cm 0.0001pt;"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;检查返回值&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 12pt;" lang="EN-AU"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;由于&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TinyXml&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;是一个非校验的解析器，因此当解析一个文件时，很可能文件并不包含我们预期的某个节点，在这种情况下，&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TinyXml&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;将返回空指针。因此，必须要对返回值进行检查，否则将很容易出现内存访问的错误。&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0cm 0cm 0.0001pt;"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;如何重头建立一个&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;XML&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;文件&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 12pt;" lang="EN-AU"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;先建立一个&lt;/span&gt;&lt;span class="spelle"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TiXmlDocument&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;对象，然后，载入某个模板，或者直接插入一个节点作为根节点，接着就可以像打开一个已有的&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;XML&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;文件那样对它进行操作了。&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0cm 0cm 0.0001pt;"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2 style="margin-left: 21pt; text-indent: -21pt;"&gt;&lt;span style="font-size: 10pt;"&gt;四、&lt;/span&gt;&lt;span style="font-size: 7pt; font-family: &amp;quot;Times New Roman&amp;quot;; font-weight: normal;" lang="EN-US"&gt;      &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 黑体;"&gt;总结&lt;/span&gt;&lt;/h2&gt;&lt;p style="text-indent: 21pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;TinyXml&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;最大的特点就是它很小，可以很方便的静态连接到程序里。对于像配置文件、简单的数据文件这类文件的解析，它很适合。但是由于它是非验证的，因此需要在程序里做许多检查工做，加重了程序编写的负担。因此对于复杂的&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-AU"&gt;XML&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 宋体;"&gt;文件，我觉得最好还是用验证的解析器来处理。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2923218862914453128-2438630830509967635?l=chenhao-nari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.csdn.net/KyosukeNo1/archive/2006/07/02/866491.aspx' title='TinyXml学习笔记'/><link rel='replies' type='application/atom+xml' href='http://chenhao-nari.blogspot.com/feeds/2438630830509967635/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2923218862914453128&amp;postID=2438630830509967635' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/2438630830509967635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/2438630830509967635'/><link rel='alternate' type='text/html' href='http://chenhao-nari.blogspot.com/2007/09/tinyxml_3663.html' title='TinyXml学习笔记'/><author><name>陈浩</name><uri>http://www.blogger.com/profile/14506725069676093869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2923218862914453128.post-7452245774397055145</id><published>2007-09-28T20:06:00.001+08:00</published><updated>2007-09-28T20:17:39.626+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><title type='text'>实战TinyXML</title><content type='html'>&lt;p style="margin-bottom: 0cm;" align="center"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="4"&gt;&lt;font color="#000000"&gt;实战&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="4"&gt;&lt;font color="#000000"&gt;TinyXML&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;" align="center" lang=""&gt;&lt;font color="#000000"&gt;&lt;font style="font-size: 10pt;" size="2"&gt;作者：裕作&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;" align="center" lang=""&gt;&lt;font color="#000000"&gt;&lt;font style="font-size: 10pt;" size="2"&gt;（本文为原创，转贴请注明出处：&lt;a href="http://blog.csdn.net/KyosukeNo1"&gt;http://blog.csdn.net/KyosukeNo1&lt;/a&gt;）&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;span lang=""&gt;这几天在埋头写自己的&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Times New Roman, serif"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;&lt;span lang="en-AU"&gt;3D&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;span lang=""&gt;文件浏览器（稍后发布），突发奇想的要把自己的内部格式转化成&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Times New Roman, serif"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;&lt;span lang="en-AU"&gt;XML&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;span lang=""&gt;，于是，把以前在研究所时用过的&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Times New Roman, serif"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;&lt;span lang="en-AU"&gt;ExPat&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;span lang=""&gt;翻了出来。 &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Times New Roman, serif"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;&lt;span lang="en-AU"&gt;ExPat&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;span lang=""&gt;是基于事件的&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Times New Roman, serif"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;&lt;span lang="en-AU"&gt;XML&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;span lang=""&gt;解释器，速度挺快的，但结构方面有点不敢恭维－－当年写配置文件的导出导入部分花了我足足&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Times New Roman, serif"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;&lt;span lang="en-AU"&gt;1&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;span lang=""&gt;个星期！而且由于它是基于事件发生的次序（&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Times New Roman, serif"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;&lt;span lang="en-AU"&gt;SAX&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;span lang=""&gt;），似乎有时会发生一些无法控制的情况－－例如进入某&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Times New Roman, serif"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;&lt;span lang="en-AU"&gt;Level&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;span lang=""&gt;后忘了记录，结果……后面的程序全部死掉！这时想起同事之前推荐的 &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Times New Roman, serif"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;&lt;span lang="en-AU"&gt;TinyXML&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;span lang=""&gt;，结果……用了不到&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Times New Roman, serif"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;&lt;span lang="en-AU"&gt;3&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;span lang=""&gt;小时就把我的&lt;/span&gt;&lt;span lang="zh-CN"&gt;文件&lt;/span&gt;&lt;span lang=""&gt;导出来了～～呵呵。&lt;/span&gt;&lt;span lang="zh-CN"&gt;在阅读本文之前，请先看看我&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Times New Roman, serif"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;&lt;span lang="en-US"&gt;Blog&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;span lang="zh-CN"&gt;里转贴的《&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Times New Roman, serif"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;&lt;span lang="en-US"&gt;TinyXML&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;span lang="zh-CN"&gt;学习笔记》，相信它能给各位一个关于&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Times New Roman, serif"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;&lt;span lang="en-US"&gt;TinyXML&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;span lang="zh-CN"&gt;的初步概念。&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;言归正传，本文目的在于补全之前《&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;TinyXML&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;学习》的不足，尽量把常用的示例代码列出让大家参考。此外，在本篇最后会给出一个完整的文件读写例子，供读者参考。&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;1. &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;编程环境的设置。新建一个项目，起名叫&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;TestTXML&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;。到&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;font color="#000080"&gt;&lt;u&gt;&lt;a href="http://sourceforge.net/projects/tinyxml/"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;http://sourceforge.net/projects/tinyxml/ &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000080"&gt;&lt;u&gt;&lt;a href="http://sourceforge.net/projects/tinyxml/"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;下载&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;TinyXML&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/a&gt;&lt;/u&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;的官方例子，并编译第一个&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;Project tinyxml&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;（注意，最好编译&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;Release&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;的版本，代码比较小。然后把生成的&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;tinyxml.lib&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;（如果是&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;Debug&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;版本，叫&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;tinyxmld.lib&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;）连同&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;tinystr.h&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;和&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;tinyxml.h&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;一起&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;Copy&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;到&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;TestTXML&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;项目的目录中。在&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;TestTXML&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;项目里的头文件加入对&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;TinyXML&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;的引用：&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#0000ff"&gt;#pragma&lt;/font&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;font color="#0000ff"&gt;comment&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#0000ff"&gt;lib&lt;/font&gt;&lt;font color="#000000"&gt;,"tinyxml.lib") // &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;链接&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;Library&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#0000ff"&gt;#include&lt;/font&gt;&lt;font color="#000000"&gt; "tinyxml.h" // TinyXML&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;的头文件&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;2. &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;建立一个&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;XML&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;文件：&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="2"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;char* sFilePath = "ikk_doc.xml"; // &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;文件名称&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="2"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;TiXmlDocument xmlDoc( sFilePath ); // &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;建立一个&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="2"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;XML&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;文件&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font style="font-size: 9pt;" size="2"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;TiXmlDeclaration Declaration( "1.0","gb2312", "yes" ); // &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font style="font-size: 9pt;" size="2"&gt;&lt;font color="#000000"&gt;声明&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font style="font-size: 9pt;" size="2"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;XML&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font style="font-size: 9pt;" size="2"&gt;&lt;font color="#000000"&gt;的属性&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font style="font-size: 9pt;" size="2"&gt;&lt;font color="#000000"&gt;xmlDoc&lt;/font&gt;&lt;font color="#000000"&gt;.&lt;/font&gt;&lt;font color="#000000"&gt;InsertEndChild&lt;/font&gt;&lt;font color="#000000"&gt;( &lt;/font&gt;&lt;font color="#000000"&gt;Declaration&lt;/font&gt;&lt;font color="#000000"&gt; );&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt; // &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt;写入基本的&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt;XML&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt;头结构&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font style="font-size: 9pt;" size="2"&gt;&lt;font color="#000000"&gt;xmlDoc&lt;/font&gt;&lt;font color="#000000"&gt;.&lt;/font&gt;&lt;font color="#000000"&gt;SaveFile&lt;/font&gt;&lt;font color="#000000"&gt;(); // &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font style="font-size: 9pt;" size="2"&gt;&lt;font color="#000000"&gt;&lt;span lang="zh-CN"&gt;把&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font style="font-size: 9pt;" size="2"&gt;&lt;font color="#000000"&gt;XML&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font style="font-size: 9pt;" size="2"&gt;&lt;font color="#000000"&gt;&lt;span lang="zh-CN"&gt;文件写入硬盘&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;这时，在硬盘上的&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;TestXML&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;项目目录里，&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;ikk_doc.xml&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;文件已经被创建出来了。&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;3. &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;在&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;XML&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;文件里插入&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;Element&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;所谓的&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;Element&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;，就是在&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;XML&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;里面的&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;Tag&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;，例如在&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;resume name="”&lt;/font"&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;裕作”&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;简历内容&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;/resume&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;中，“&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;Resume”&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;就是&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;Element&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;的名字，上述的整个字符串就是一个&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;Element&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;。在&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;TinyXML&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;里，插入&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;Element&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;的步骤如下：&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt;TiXmlElement* pElm = NULL; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="2"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;pElm = new TiXmlElement( "resumes" ); //&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;定义当前的子节点&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="2"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt; pElmParent.InsertEndChild( *pElm ); // &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;把子节点插入父节点中&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="2"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;4. &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;在&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;element&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;里插入属性。在刚才例子中，&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;name=”&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;裕作”就是&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;Resume&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;的属性，其中&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;name&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;是属性的名字，”裕作”是属性的值。在当前子节点内插入属性的方法如下：&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="2"&gt;&lt;span lang="en-US"&gt;pElm-&gt;SetAttribute( "name", resume.sName ); &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;5. &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;在&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;XML&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;里插入文本。在&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;&lt;resume name="”&lt;/font"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;裕作”&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;简历内容&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;&lt;/resume&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;中，“简历内容”就是一段文本，事实上，在&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;TinyXML&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;里，它是被当作一个&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;Text&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;类型的子节点来插入的。还而言之，就是在&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;Resume&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;的子节点中，插入这个&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;Text&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;子节点。插入例子如下：&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;TiXmlText* pText = NULL;&lt;br /&gt;pText = new TiXmlText( "&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;简历内容&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;" ); // &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;定义文本的内容&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;pElmChild-&gt;InsertEndChild( *pText ); //&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;把&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;text&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;子节点插入父节点中&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;在具备了以上背景知识之后，我们已经可以用&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;TinyXML&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;读写一个&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;XML&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;文件了。本文最后的程序将写入，然后重新读取一个&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;XML&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;文件到我们的结构里。这个&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;XML&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;文件的内容如下：&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;&lt;?xml version="1.0" encoding="GB2312" ?&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;&lt;resumes&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;resume name=""&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;裕作&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;       &lt;gender&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;男&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;&lt;/gender&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;       &lt;age&gt;26&lt;/age&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;       &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;skills num="2"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;           &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;skill level="99"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;编程&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;&lt;/skill&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;           &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;skill level="1"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;吹牛&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;&lt;/skill&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;       &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;/skills&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/resume&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;resume name=""&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;裕作 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;The Great"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;gender&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;男&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;&lt;/gender&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;age&gt;0&lt;/age&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;skills num="1"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;skill level="100"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;编程&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;&lt;/skill&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;/skills&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;/resume&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;&lt;/resumes&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;以下程序将建立&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#000000"&gt;ikk_doc.xml&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;文件，然后重新把内容读取进内存：&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;#pragma comment(lib,"tinyxml.lib")&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;#include "string.h"&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;#include "stdio.h"&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;#include "tinyxml.h"&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;#define XML_FILE "ikk_doc.xml"&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;#define NAME_LENGTH 256 // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;名字类字符的分配长度&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;#define SAFE_DELETE(x) {if(x) delete x; x=NULL;} // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;安全删除&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;new&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;分配出来的变量空间&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;#define SAFE_DELETE_ARRAY(x) {if(x) delete[] x; x=NULL;} // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;安全删除&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;new&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;分配出来的数组空间&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;#define XML_HEADER "&lt;?xml version=\"1.0\" encoding=\"GB2312\" ?&gt;" // XML&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;文件头的定义&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;typedef unsigned int uint32;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;// &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;技能的结构&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;typedef struct skill_s {&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;uint32 nLevel; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;技能的程度&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;char sName[ NAME_LENGTH ]; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;技能的名称&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;skill_s() {&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;nLevel = 0;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;sName[0] = 0;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;}&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;} skill_t;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;// &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;简历的结构&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;typedef struct resume_s {&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;char sName[ NAME_LENGTH ]; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;名字&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;bool isMan; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;是否男性&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;uint32 nAge; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;年龄&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;uint32 nNumSkill; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;技能的数目&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;skill_t* pSkill; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;技能的结构&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;resume_s() {&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;sName[0] = 0;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;isMan = false;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;nAge = 0;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;nNumSkill = 0;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pSkill = NULL;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;}&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;} resume_t;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;void exportSkill( TiXmlElement* pElmParent, skill_t skill )&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;{&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;int i;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;char sBuf[NAME_LENGTH]; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;一个临时存放的字符串&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;TiXmlElement* pElm = NULL; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;一个指向&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Element&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;的指针&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;TiXmlText* pText = NULL; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;一个指向&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Text&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;的指针&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pElm = new TiXmlElement( "skill" );&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;// &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;插入等级（以属性形式）&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;sprintf( sBuf, "%d", skill.nLevel ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;把&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Skill&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;的登记变成字符串临时存进&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;sBuf&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;里&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pElm-&gt;SetAttribute( "level", sBuf ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;把等级插入&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Skill&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;里&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt; &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;// &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;插入技能名称（以子&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Element&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;形式）&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pText = new TiXmlText( skill.sName ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;建立一个&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Skill&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;的子&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Element&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;（一个&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Text&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;形式的子元素）&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pElm-&gt;InsertEndChild( *pText ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;把这个&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Skill&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;的子&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Element&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;插入&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Skill&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;里&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;SAFE_DELETE( pText ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;删除这个&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Text&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;// &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;最后把整个&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Resume&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;的子节点插入到父节点中&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pElmParent-&gt;InsertEndChild( *pElm );&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;}&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;void importSkill( TiXmlElement* pElm, skill_t* pSkill )&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;{&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;int i;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;char sBuf[NAME_LENGTH]; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;一个临时存放的字符串&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;TiXmlElement* pElmChild = NULL; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;一个指向&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Element&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;的指针&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;TiXmlText* pText = NULL; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;一个指向&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Text&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;的指针&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;// &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;读取&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;level&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pSkill-&gt;nLevel = atoi( pElm-&gt;Attribute( "level" ) );&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;// &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;读取技能名称&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;strcpy( pSkill-&gt;sName, pElm-&gt;FirstChild()-&gt;Value() );&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;}&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;void exportResume( TiXmlElement* pElmParent, resume_t resume )&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;{&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;int i;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;char sBuf[NAME_LENGTH]; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;一个临时存放的字符串&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;TiXmlElement* pElm = NULL; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;一个指向&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Element&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;的指针&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;TiXmlElement* pElmChild = NULL; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;一个指向&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Element&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;的指针&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;TiXmlText* pText = NULL; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;一个指向&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Text&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;的指针&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pElm = new TiXmlElement( "resume" );&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;// &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;插入名字（以属性形式）&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pElm-&gt;SetAttribute( "name", resume.sName ); &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;// &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;插入性别（以子&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Element&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;形式）&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pElmChild = new TiXmlElement( "gender" ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;建立一个子&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Element&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;叫&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Gender&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;if( resume.isMan )&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pText = new TiXmlText( "&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;男&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;" ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;建立一个&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Gender&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;的子&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Element&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;（一个&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Text&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;形式的子元素）&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;else&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pText = new TiXmlText( "&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;女&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;" ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;建立一个&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Gender&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;的子&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Element&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;（一个&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Text&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;形式的子元素）&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pElmChild-&gt;InsertEndChild( *pText ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;把这个&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Gender&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;的子&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Element&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;插入&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Gender&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;里&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pElm-&gt;InsertEndChild( *pElmChild ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;把&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Gender&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;插入到主&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Element&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;里&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;SAFE_DELETE( pElmChild ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;删除已经用完的&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Gender&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;SAFE_DELETE( pText ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;删除这个&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Text&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;// &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;插入年龄（以子&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Element&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;形式）&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pElmChild = new TiXmlElement( "age" ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;建立一个子&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Element&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;叫&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Age&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;sprintf( sBuf, "%d", resume.nAge ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;把&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Age&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;变成字符串临时存进&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;sBuf&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;里&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pText = new TiXmlText( sBuf ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;建立一个&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Age&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;的子&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Element&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;（一个&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Text&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;形式的子元素）&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pElmChild-&gt;InsertEndChild( *pText ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;把这个&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Age&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;的子&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Element&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;插入&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Age&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;里&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pElm-&gt;InsertEndChild( *pElmChild ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;把&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Age&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;插入到主&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Element&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;里&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;SAFE_DELETE( pElmChild ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;删除已经用完的&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Age&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;SAFE_DELETE( pText ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;删除这个&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Text&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;// &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;插入技能子节点&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pElmChild = new TiXmlElement( "skills" ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;建立一个子&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Element&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;叫&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Skills&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;sprintf( sBuf, "%d", resume.nNumSkill ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;把&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Skill&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;的数目变成字符串临时存进&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;sBuf&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;里&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pElmChild-&gt;SetAttribute( "num", sBuf ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;把这个&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Skills&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;的属性插入&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Skills&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;里&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;for( i=0; i&lt;resume.nnumskill;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;{&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;exportSkill( pElmChild, resume.pSkill[i] ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;插入一项技能&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;}&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pElm-&gt;InsertEndChild( *pElmChild ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;把&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Skills&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;插入到主&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Element&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;里&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;SAFE_DELETE( pElmChild ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;删除已经用完的&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Skills&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;SAFE_DELETE( pText ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;删除这个&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Text&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;// &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;最后把整个&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Resume&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;的子节点插入到父节点中&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pElmParent-&gt;InsertEndChild( *pElm );&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;SAFE_DELETE( pElm ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;删除子节点&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;}&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;void importResume( TiXmlElement* pElm, resume_t* pResume )&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;{&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;int i;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;char sBuf[NAME_LENGTH]; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;一个临时存放的字符串&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;TiXmlElement* pElmChild = NULL; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;一个指向&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Element&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;的指针&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;TiXmlElement* pElmGrandChild = NULL; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;一个指向&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Element&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;的指针&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;TiXmlText* pText = NULL; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;一个指向&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Text&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;的指针&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;// &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;读入&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;"resume"&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;子节点&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;strcpy( pResume-&gt;sName, pElm-&gt;Attribute( "name" ) );&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;// &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;读入&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;"gender"&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;子节点&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pElmChild = pElm-&gt;FirstChildElement( "gender" );&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;if( strcmp( "&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;男&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;", pElmChild-&gt;FirstChild()-&gt;Value() ) == 0 )&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pResume-&gt;isMan = true;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;else&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pResume-&gt;isMan = false;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;// &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;读入&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;"age"&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;子节点&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pElmChild = pElm-&gt;FirstChildElement( "age" );&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pResume-&gt;nAge = atoi( pElmChild-&gt;FirstChild()-&gt;Value() );&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;// &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;读入&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;"skills"&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;子节点&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pElmChild = pElm-&gt;FirstChildElement( "skills" );&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pResume-&gt;nNumSkill = atoi( pElmChild-&gt;Attribute( "num" ) );&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pResume-&gt;pSkill = new skill_t[pResume-&gt;nNumSkill];&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pElmGrandChild = pElmChild-&gt;FirstChildElement( "skill" ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;指向第一个&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Skill&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;for( i=0; i&lt;presume-&gt;nNumSkill; i++ ) {&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;importSkill( pElmGrandChild, &amp;amp;(pResume-&gt;pSkill[i]) ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;读取一个&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Skill&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pElmGrandChild = pElmGrandChild-&gt;NextSiblingElement(); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;指向下一个&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Skill&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;}&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;}&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;bool readXML( char* sFilePath, int* nNumResume, resume_t** ppResume ) &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;{&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;int i; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;用做循环的变量&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;TiXmlElement* pElmChild = NULL; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;一个指向&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Element&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;的指针&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;TiXmlDocument xmlDoc( sFilePath ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;输入&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;XML&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;路径&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;if( !xmlDoc.LoadFile() ) // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;读取&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;XML&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;并检查是否读入正确&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;return false;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;TiXmlElement* pElmRoot = NULL; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;根节点&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pElmRoot = xmlDoc.FirstChildElement( "resumes" ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;得到根节点&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;if( !pElmRoot ) {&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;return false;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;}&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;*nNumResume = atoi( pElmRoot-&gt;Attribute( "num" ) ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;读取&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Resume&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;的数目&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;*ppResume = new resume_t[*nNumResume]; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;分配&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Resume&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;的空间&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pElmChild = pElmRoot-&gt;FirstChildElement( "resume" ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;找出第一个&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Resume&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;for( i=0; i&lt;*nNumResume; i++ ) {&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;importResume( pElmChild, &amp;amp;((*ppResume)[i]) ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;读取&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Resume&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;的内容&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pElmChild = pElmChild-&gt;NextSiblingElement(); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;找出下一个&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Resume&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;}&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;return true;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;}&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;bool writeXML( char* sFilePath, int nNumResume, resume_t* pResume )&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;{&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;if( !sFilePath || !pResume )&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;return false; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;确定指针存在&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;int i; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;用做循环的变量&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;char sBuf[NAME_LENGTH]; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;一个临时存放的字符串&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;TiXmlElement* pElm = NULL; // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;一个指向&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Element&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;的指针&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;TiXmlDeclaration Declaration( "1.0","gb2312", "yes" ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;建立&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;XML&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;头结构&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;TiXmlDocument xmlDoc( sFilePath ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;用存档的文件名字来建立一个&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;XML&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;文件&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;xmlDoc.InsertEndChild( Declaration ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;把&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;XML&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;头结构插入当前文档&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;// &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;插入根节点“&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Resumes”&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pElm = new TiXmlElement( "resumes" ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;建立根节点“&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Resumes”&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;sprintf( sBuf, "%d", nNumResume ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;把&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;nNumResume&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;变成字符串临时存进&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;sBuf&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;里&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pElm-&gt;SetAttribute( "num", sBuf ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;建立一个&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Resumes&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;的子&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Element&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;for( i=0; i&lt;2; i++ )&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;exportResume( pElm, pResume[i] ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;在根节点上插入以上定义的&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;2&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;个简历&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;xmlDoc.InsertEndChild( *pElm );&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;xmlDoc.SaveFile();&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;SAFE_DELETE( pElm ); // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;删除&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Element&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;return true;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;}&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;void main()&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;{&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;int i, j;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;// + == &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;设置两份简历 &lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;==========================================================&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;int nNumResume = 2;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;resume_t* pResume = new resume_t[ nNumResume ];&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;// 1. &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;初始化第一份简历&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;strcpy( pResume[0].sName, "&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;裕作&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;" );&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pResume[0].isMan = true;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pResume[0].nAge = 26;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pResume[0].nNumSkill = 2;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pResume[0].pSkill = new skill_t[2];&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;{ // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;设置技能列表结构&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;strcpy( pResume[0].pSkill[0].sName, "&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;编程&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;" );&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;strcpy( pResume[0].pSkill[1].sName, "&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;吹牛&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;" );&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pResume[0].pSkill[0].nLevel = 99;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pResume[0].pSkill[1].nLevel = 1;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;}&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;// 2. &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;初始化第二份简历&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;strcpy( pResume[1].sName, "&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;裕作 &lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;The Great" );&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pResume[1].isMan = true;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pResume[1].nAge = 0;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pResume[1].nNumSkill = 1;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pResume[1].pSkill = new skill_t[1];&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;{ // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;设置技能列表结构&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;strcpy( pResume[1].pSkill[0].sName, "&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;编程&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;" );&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;pResume[1].pSkill[0].nLevel = 100;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;}&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;// - == &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;设置两份简历 &lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;==========================================================&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;// &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;把简历以&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;XML&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;形式写入磁盘&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;if( !writeXML( XML_FILE, nNumResume, pResume ) )&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;{&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;printf( "ERROR: can't write the file." );&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;return;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;}&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;// &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;删除&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Resume&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;nNumResume = 0;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;SAFE_DELETE_ARRAY( pResume );&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;// &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;重新读入&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;XML&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;文件里的&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Resume&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;数据&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;if( !readXML( XML_FILE, &amp;amp;nNumResume, &amp;amp;pResume ) )&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;{&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;printf( "ERROR: can't read the file." );&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;return;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;}&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;// &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;把所有简历输出到屏幕&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;if( pResume ) // &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;确定有&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;Resume&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;{&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;for( i=0; i&lt;nnumresume;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;printf( "&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;简历：&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;======================\n" );&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;printf( "\t&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;名字：&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;%s\n", pResume[i].sName );&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;if( pResume[i].isMan )&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;printf( "\t&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;性别：男&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;\n" );&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;else&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;printf( "\t&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;性别：女&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;\n" );&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;printf( "\t&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;年龄：&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;%d\n", pResume[i].nAge );&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;printf( "\t&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;职业技能：&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;\n" );&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;for( j=0; j&lt;presume[i].nnumskill;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;printf( "\t\t&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;技能名称：&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;%s\n", pResume[i].pSkill[j].sName );&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;printf( "\t\t&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;技能等级：&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;%d\n", pResume[i].pSkill[j].nLevel );&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;}&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;}&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="Times New Roman, serif"&gt;&lt;span lang="en-US"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;    &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;}&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;font color="#000000"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="en-US"&gt;}&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-indent: 0.85cm;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2923218862914453128-7452245774397055145?l=chenhao-nari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.csdn.net/KyosukeNo1/archive/2006/07/04/875481.aspx' title='实战TinyXML'/><link rel='replies' type='application/atom+xml' href='http://chenhao-nari.blogspot.com/feeds/7452245774397055145/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2923218862914453128&amp;postID=7452245774397055145' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/7452245774397055145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/7452245774397055145'/><link rel='alternate' type='text/html' href='http://chenhao-nari.blogspot.com/2007/09/tinyxml_1946.html' title='实战TinyXML'/><author><name>陈浩</name><uri>http://www.blogger.com/profile/14506725069676093869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2923218862914453128.post-7291203772742986452</id><published>2007-09-28T20:01:00.000+08:00</published><updated>2007-09-28T20:06:15.636+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='trac'/><title type='text'>[trac]有用的插件</title><content type='html'>&lt;a href="http://blog.csdn.net/riag/archive/2007/05/30/1631523.aspx"&gt;[trac]有用的插件&lt;/a&gt;  &lt;script src="http://blog.csdn.net/count.aspx?ID=1631523&amp;amp;Type=Rank"&gt;&lt;/script&gt;&lt;span title="文章指数:48"&gt;&lt;img src="http://blog.csdn.net/images/star.gif" border="0" /&gt;&lt;img src="http://blog.csdn.net/images/star.gif" border="0" /&gt;&lt;img src="http://blog.csdn.net/images/star_half.gif" border="0" /&gt;&lt;/span&gt;  &lt;img src="http://blog.csdn.net/images/ask.gif" alt="CSDN Blog推出文章指数概念，文章指数是对Blog文章综合评分后推算出的，综合评分项分别是该文章的点击量，回复次数，被网摘收录数量，文章长度和文章类型；满分100，每月更新一次。" title="CSDN Blog推出文章指数概念，文章指数是对Blog文章综合评分后推算出的，综合评分项分别是该文章的点击量，回复次数，被网摘收录数量，文章长度和文章类型；满分100，每月更新一次。" border="0" /&gt;     &lt;div class="postText"&gt;  &lt;p&gt;    trac终于在公司内部使用起来. 现在列一下我认为比较好用的插件.&lt;/p&gt;&lt;p&gt;    1.  &lt;a class="wiki" href="http://trac.edgewall.org/wiki/WebAdmin"&gt;&lt;span style="color: rgb(187, 0, 0);"&gt;WebAdmin&lt;/span&gt;&lt;/a&gt;:  这个肯定要装, 用这个 进行管理权限很方便&lt;/p&gt;&lt;p&gt;    2. &lt;a class="ext-link" href="http://trac-hacks.org/wiki/AccountManagerPlugin"&gt;&lt;span class="icon"&gt;&lt;span style="color: rgb(187, 0, 0);"&gt;AccountManagerPlugin&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; :  提供以web界面的方式登录. trac默认的登录方式切换用户比较麻烦.&lt;/p&gt;&lt;p&gt;    3. &lt;a class="wiki" href="http://trac-hacks.org/wiki/TracBlogPlugin"&gt;TracBlogPlugin&lt;/a&gt; : 写blog, 这个我主要用来写开发日志. 依赖&lt;a class="ext-link" href="http://trac-hacks.org/wiki/TagsPlugin"&gt;&lt;span class="icon"&gt;&lt;span style="color: rgb(187, 0, 0);"&gt;TracTags&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; 插件.&lt;/p&gt;&lt;p&gt;    4. &lt;a class="ext-link" href="http://dev.rectang.com/projects/tracdown"&gt;&lt;span class="icon"&gt;&lt;span style="color: rgb(187, 0, 0);"&gt;TracDown&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; : 列出项目释放出来的所有版本, 提供下载.&lt;/p&gt;&lt;p&gt;    5. &lt;a class="wiki" href="http://trac-hacks.org/wiki/AddCommentMacro"&gt;AddCommentMacro&lt;/a&gt; : 允许其他人对某个wiki添加评论. 依赖&lt;a class="wiki" href="http://trac-hacks.org/wiki/MacroPostPlugin"&gt;MacroPostPlugin&lt;/a&gt;插件.&lt;/p&gt;&lt;p&gt;    6. &lt;a class="ext-link" href="http://oss.werkbold.de/trac-cc/"&gt;&lt;span class="icon"&gt;Trac-CC&lt;/span&gt;&lt;/a&gt; : 显示&lt;span style="color: rgb(187, 0, 0);"&gt;CruiseControl&lt;/span&gt; 自动构建报告 .&lt;/p&gt;&lt;p&gt;    7. &lt;a class="wiki" href="http://trac-hacks.org/wiki/ThemeEnginePlugin"&gt;ThemeEnginePlugin&lt;/a&gt;:  如果你想为trac换皮肤, 就要装这个插件&lt;/p&gt;&lt;p&gt;    8. &lt;a class="wiki" href="http://trac-hacks.org/wiki/OpenOfficeToTracWikiScript"&gt;OpenOfficeToTracWikiScript&lt;/a&gt; : 这个不是trac的插件. 但这个脚本对不会写wiki的人来说很有用.  它是把openoffice文档转换成trac wiki语法格式. &lt;/p&gt;&lt;p&gt;附: &lt;/p&gt;&lt;p&gt;&lt;a href="http://trac.edgewall.org/wiki/PluginList"&gt;http://trac.edgewall.org/wiki/PluginList&lt;/a&gt;    列出常用的插件&lt;/p&gt;&lt;p&gt;&lt;a href="http://trac-hacks.org/"&gt;http://trac-hacks.org/&lt;/a&gt;     trac所有的插件&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2923218862914453128-7291203772742986452?l=chenhao-nari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.csdn.net/riag/archive/2007/05/30/1631523.aspx' title='[trac]有用的插件'/><link rel='replies' type='application/atom+xml' href='http://chenhao-nari.blogspot.com/feeds/7291203772742986452/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2923218862914453128&amp;postID=7291203772742986452' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/7291203772742986452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/7291203772742986452'/><link rel='alternate' type='text/html' href='http://chenhao-nari.blogspot.com/2007/09/trac_28.html' title='[trac]有用的插件'/><author><name>陈浩</name><uri>http://www.blogger.com/profile/14506725069676093869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2923218862914453128.post-2148744006796457459</id><published>2007-09-28T19:49:00.000+08:00</published><updated>2007-09-28T20:01:05.470+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='config file'/><title type='text'>C/C++跨平台ini文件读写API (已更新)</title><content type='html'>&lt;div class="posthead"&gt;    &lt;h2&gt;     &lt;a id="viewpost1_TitleUrl" class="singleposttitle" href="http://www.cppblog.com/dyj057/archive/2006/01/24/3012.html"&gt;C/C++跨平台ini文件读写API (已更新)&lt;/a&gt;    &lt;/h2&gt;     Posted on 2006-01-24 16:37 &lt;a href="http://www.cppblog.com/dyj057/"&gt;天下无双&lt;/a&gt; 阅读(1933) &lt;a href="http://www.cppblog.com/dyj057/archive/2006/01/24/3012.html#Post"&gt;评论(15)&lt;/a&gt;  &lt;a href="http://www.cppblog.com/dyj057/admin/EditPosts.aspx?postid=3012"&gt;编辑&lt;/a&gt; &lt;a href="http://www.cppblog.com/dyj057/AddToFavorite.aspx?id=3012"&gt;收藏&lt;/a&gt; &lt;a href="http://www.cppblog.com/dyj057/services/trackbacks/3012.aspx"&gt;引用&lt;/a&gt;  所属分类: &lt;a href="http://www.cppblog.com/dyj057/category/3448.html"&gt;C/C++&lt;/a&gt;     &lt;img src="http://www.cppblog.com/dyj057/aggbug/3012.html?webview=1" height="1" width="1" /&gt;     &lt;!-- &lt;rdf:rdf rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" dc="http://purl.org/dc/elements/1.1/" trackback="http://madskills.com/public/xml/rss/module/trackback/"&gt; &lt;rdf:description about="http://www.cppblog.com/dyj057/archive/2006/01/24/3012.html" identifier="http://www.cppblog.com/dyj057/archive/2006/01/24/3012.html" title="C/C++跨平台ini文件读写API (已更新)" ping="http://www.cppblog.com/dyj057/services/trackbacks/3012.aspx"&gt; &lt;/rdf:RDF&gt; --&gt;    &lt;/div&gt;   &lt;p&gt;昨 天写了个一组ini文件读写函数。提供大家使用，已经在XP+VC7.1和FC6+GCC4.1,ARM9+arm-linux-gcc3.3中测试过 了，可以跨平台使用。使用标准C写得，支持C++。源程序可以到:http: //www.cppblog.com/Files/dyj057/inifile.zip下载。&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;/*&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;*&lt;br /&gt;*@file             inifile.h&lt;br /&gt;*@cpright        (C)2007 GEC&lt;br /&gt;*@auther        dengyangjun&lt;br /&gt;*@email        dyj057@gmail.com&lt;br /&gt;*@version        0.1&lt;br /&gt;*@create         2007-1-14&lt;br /&gt;*@modify        2007-1-14&lt;br /&gt;*@brief            declare ini file operation&lt;br /&gt;*@note&lt;br /&gt;*@history   &lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;*/&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;#ifndef INI_FILE_H_&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;#define&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; INI_FILE_H_&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;#ifdef __cplusplus&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;extern&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;C&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;#endif&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; read_profile_string( &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;section, &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;key,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;value, &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; size, &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;file);&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; read_profile_int( &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;section, &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;key,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; default_value, &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;file);&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; write_profile_string( &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;section, &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;key,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;value, &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;file);&lt;br /&gt;&lt;br /&gt;#ifdef __cplusplus&lt;br /&gt;}; &lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;end of extern "C" {&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;#endif&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;#endif&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;end of INI_FILE_H_&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;/div&gt; &lt;p&gt; &lt;/p&gt; &lt;div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;/*&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;*&lt;br /&gt;*@file             inifile.c&lt;br /&gt;*@cpright        (C)2007 GEC&lt;br /&gt;*@auther        dengyangjun&lt;br /&gt;*@email        dyj057@gmail.com&lt;br /&gt;*@version        0.1&lt;br /&gt;*@create         2007-1-14&lt;br /&gt;*@modify        2007-1-14&lt;br /&gt;*@brief            implement ini file operation&lt;br /&gt;*@note&lt;br /&gt;*@history   &lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;*/&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;#include &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;stdio.h&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;#include &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;stdlib.h&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;#include &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;assert.h&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;#include &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;.h&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;#include &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;ctype.h&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;#include &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;inifile.h&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;#ifdef __cplusplus&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;extern&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;C&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;#endif&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;#define&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; MAX_FILE_SIZE 8096&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;#define&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; LEFT_BRACE '['&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;#define&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; RIGHT_BRACE ']'&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; load_ini_file(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;file, &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;buf,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;file_size)&lt;br /&gt;{&lt;br /&gt;    FILE &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; NULL;&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; i&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;file_size &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&lt;br /&gt;    assert(file &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;!=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;NULL);&lt;br /&gt;    assert(buf &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;!=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;NULL);&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; fopen(file,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;r&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;( NULL &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;) {&lt;br /&gt;        &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;load initialization file&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;while&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;((buf[i]&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;fgetc(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;))&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;!=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;EOF) {&lt;br /&gt;        i&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;++&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;        assert( i &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; MAX_FILE_SIZE); &lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;file too big&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;    }&lt;br /&gt;   &lt;br /&gt;    buf[i]&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;\0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;file_size &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; i;&lt;br /&gt;&lt;br /&gt;    fclose(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;/*&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;*&lt;summary&gt;&lt;/summary&gt;&lt;br /&gt;* &lt;returns&gt;Result of the addtion(int)&lt;/returns&gt;&lt;br /&gt;* &lt;param name="x"&gt;&lt;/param&gt;&lt;br /&gt;* &lt;param name="y"&gt;&lt;/param&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;*/&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; isnewline(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; c)&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; (&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;\n&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; c &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;||&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;  &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;\r&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; c )&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;?&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; : &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; isend(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; c)&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;\0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;c&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;?&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; : &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; isleftbarce(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; c)&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; LEFT_BRACE &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; c&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;?&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; : &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; isrightbrace(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; c )&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; RIGHT_BRACE &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; c&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;?&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; : &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; parse_file(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;section, &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;key, &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;buf,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;sec_s,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;sec_e,&lt;br /&gt;                      &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;key_s,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;key_e, &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;value_s, &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;value_e)&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;p &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; buf;&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; i&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&lt;br /&gt;    assert(buf&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;!=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;NULL);&lt;br /&gt;    assert(section &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;!=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; NULL &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; strlen(section));&lt;br /&gt;    assert(key &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;!=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; NULL &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; strlen(key));&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;sec_e &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;sec_s &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;key_e &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;key_s &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;value_s &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;value_e &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;while&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;( &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;!&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;isend(p[i]) )&lt;br /&gt;    {&lt;br /&gt;        &lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;find the section&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;( ( &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;i &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;||&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;  isnewline(p[i&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;]) ) &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; isleftbarce(p[i]) )&lt;br /&gt;        {&lt;br /&gt;            &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; section_start&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;i&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&lt;br /&gt;            &lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;find the ']'&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;do&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;            {&lt;br /&gt;                i&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;++&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;            }&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;while&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;( &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;!&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;isrightbrace(p[i]) &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;!&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;isend(p[i]));&lt;br /&gt;&lt;br /&gt;            &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;( &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; strncmp(p&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;section_start,section, i&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;section_start))&lt;br /&gt;            {&lt;br /&gt;                &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; newline_start&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&lt;br /&gt;                i&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;++&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&lt;br /&gt;                &lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;Skip over space char after ']'&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;while&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;(isspace(p[i]))&lt;br /&gt;                {&lt;br /&gt;                    i&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;++&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                &lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;find the section&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;sec_s &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; section_start;&lt;br /&gt;                &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;sec_e &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; i;&lt;br /&gt;&lt;br /&gt;                &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;while&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;( &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;!&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; (isnewline(p[i&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;]) &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; isleftbarce(p[i])) &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;!&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;isend(p[i]) )&lt;br /&gt;                {&lt;br /&gt;                    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; j&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;                    &lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;get a new line&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;                    newline_start &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; i;&lt;br /&gt;&lt;br /&gt;                    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;while&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;( &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;!&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;isnewline(p[i]) &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;  &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;!&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;isend(p[i]) )&lt;br /&gt;                    {&lt;br /&gt;                        i&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;++&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;                    }&lt;br /&gt;                    &lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;now i  is equal to end of the line&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;                    j&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;newline_start;&lt;br /&gt;&lt;br /&gt;                    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;!=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; p[j]) &lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;skip over comment&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;                    {&lt;br /&gt;                        &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;while&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;(j &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; i &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; p[j]&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;!=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;br /&gt;                        {&lt;br /&gt;                            j&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;++&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;                            &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; p[j])&lt;br /&gt;                            {&lt;br /&gt;                                &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;(strncmp(key,p&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;newline_start,j&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;newline_start)&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;br /&gt;                                {&lt;br /&gt;                                    &lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;find the key ok&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;                                    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;key_s &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; newline_start;&lt;br /&gt;                                    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;key_e &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; j&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&lt;br /&gt;                                    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;value_s &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; j&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;                                    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;value_e &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; i;&lt;br /&gt;&lt;br /&gt;                                    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;                                }&lt;br /&gt;                            }&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;&lt;br /&gt;                    i&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;++&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;        {&lt;br /&gt;            i&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;++&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;/*&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;*&lt;br /&gt;* @brief read_profile_string &lt;d&gt;retrieves a string from the specified section in an initialization file.&lt;br /&gt;* @param section  &lt;t&gt;const char * &lt;in&gt; &lt;d&gt;name of the section containing the key name.&lt;br /&gt;* @param key  &lt;t&gt;const char *  &lt;in&gt;&lt;d&gt;the name of the key whose associated string is to be retrieved.&lt;br /&gt;* @param value &lt;t&gt;char * &lt;out&gt;&lt;d&gt;pointer to the buffer that receives the retrieved string.     &lt;br /&gt;* @return &lt;t&gt;int  &lt;n&gt;1 : read success; 0 : read fail.&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;*/&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;     &lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; read_profile_string( &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;section, &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;key,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;value,  &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; size, &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;file)&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; buf[MAX_FILE_SIZE]&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;};&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; file_size;&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; sec_s,sec_e,key_s,key_e, value_s, value_e;&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;check parameters&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;    assert(section &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;!=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; NULL &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; strlen(section));&lt;br /&gt;    assert(key &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;!=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; NULL &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; strlen(key));&lt;br /&gt;    assert(value &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;!=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; NULL);&lt;br /&gt;    assert(size &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;    assert(file &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;!=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;NULL &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;strlen(key));&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;( &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;!&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;load_ini_file(file,buf,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;file_size))&lt;br /&gt;        &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;!&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;parse_file(section,key,buf,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;sec_s,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;sec_e,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;key_s,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;key_e,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;value_s,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;value_e))&lt;br /&gt;    {&lt;br /&gt;        &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;; &lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;not find the key&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;    }&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;    {&lt;br /&gt;        &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; cpcount &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; value_e &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;value_s;&lt;br /&gt;&lt;br /&gt;        &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;( size&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; cpcount)&lt;br /&gt;        {&lt;br /&gt;            cpcount &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;  size&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;        }&lt;br /&gt;   &lt;br /&gt;        memset(value, &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;, size);&lt;br /&gt;        memcpy(value,buf&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;value_s, cpcount );&lt;br /&gt;        value[cpcount] &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;\0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&lt;br /&gt;        &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; read_profile_int( &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;section, &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;key,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; default_value, &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;file)&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; value[&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;32&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;] &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; {&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;};&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;!&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;read_profile_string(section,key,value, &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;sizeof&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;(value),file))&lt;br /&gt;    {&lt;br /&gt;        &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; default_value;&lt;br /&gt;    }&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;    {&lt;br /&gt;        &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; atoi(value);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; write_profile_string( &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;section, &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;key,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;value, &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;file)&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; buf[MAX_FILE_SIZE]&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;};&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; w_buf[MAX_FILE_SIZE]&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;};&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; sec_s,sec_e,key_s,key_e, value_s, value_e;&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; value_len &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; (&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;)strlen(value);&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; file_size;&lt;br /&gt;    FILE &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;out&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;check parameters&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;    assert(section &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;!=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; NULL &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; strlen(section));&lt;br /&gt;    assert(key &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;!=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; NULL &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; strlen(key));&lt;br /&gt;    assert(value &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;!=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; NULL);&lt;br /&gt;    assert(file &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;!=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;NULL &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;strlen(key));&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;(!load_ini_file(file,buf,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;file_size))&lt;br /&gt;    {&lt;br /&gt;        sec_s &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;    }&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;    {&lt;br /&gt;        parse_file(section,key,buf,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;sec_s,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;sec_e,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;key_s,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;key_e,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;value_s,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;value_e);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;( &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; sec_s)&lt;br /&gt;    {&lt;br /&gt;       &lt;br /&gt;        &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;file_size)&lt;br /&gt;        {&lt;br /&gt;            sprintf(w_buf&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;file_size,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;[%s]\n%s=%s\n&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;,section,key,value);&lt;br /&gt;        }&lt;br /&gt;        &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;        {&lt;br /&gt;            &lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;not find the section, then add the new section at end of the file&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;            memcpy(w_buf,buf,file_size);&lt;br /&gt;            sprintf(w_buf&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;file_size,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;\n[%s]\n%s=%s\n&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;,section,key,value);&lt;br /&gt;        }&lt;br /&gt;       &lt;br /&gt;       &lt;br /&gt;    }&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; key_s)&lt;br /&gt;    {&lt;br /&gt;        &lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;not find the key, then add the new key &amp;amp; value at end of the section&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;        memcpy(w_buf,buf,sec_e);&lt;br /&gt;        sprintf(w_buf&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;sec_e,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;%s=%s\n&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;,key,value);&lt;br /&gt;        sprintf(w_buf&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;sec_e&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;strlen(key)&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;strlen(value)&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;2&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;,buf&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;sec_e, file_size &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; sec_e);&lt;br /&gt;    }&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;    {&lt;br /&gt;        &lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;update value with new value&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;        memcpy(w_buf,buf,value_s);&lt;br /&gt;        memcpy(w_buf&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;value_s,value, value_len);&lt;br /&gt;        memcpy(w_buf&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;value_s&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;value_len, buf&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;value_e, file_size &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; value_e);&lt;br /&gt;    }&lt;br /&gt;   &lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;out&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; fopen(file,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;w&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;(NULL &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;out&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;br /&gt;    {&lt;br /&gt;        &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;    }&lt;br /&gt;   &lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; fputs(w_buf,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;out&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;) )&lt;br /&gt;    {&lt;br /&gt;        fclose(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;out&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;        &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    fclose(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;out&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;   &lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#ifdef __cplusplus&lt;br /&gt;}; &lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;end of extern "C" {&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;#endif&lt;/span&gt; &lt;/div&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;#include &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;stdio.h&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;#include &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;inifile.h&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;main.c&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;#define&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; BUF_SIZE 256&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; main()&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;file &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;myconfig.ini&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;section &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;Db&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;key &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;XX2&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;   &lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; value[BUF_SIZE]&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;};&lt;br /&gt;   &lt;br /&gt;    printf(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;test get profile string\n&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;!&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;read_profile_string(section, key, value, BUF_SIZE, file))&lt;br /&gt;    {&lt;br /&gt;       &lt;br /&gt;        printf(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;read ini file fail\n&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;    }&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;    {&lt;br /&gt;        &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; x &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; read_profile_int(section,key,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;,file);&lt;br /&gt;        printf(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;XX2=%d\n&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;, x);&lt;br /&gt;        printf(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;read: [%s] = [%s]\n&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;,key,value);&lt;br /&gt;    }&lt;br /&gt;   &lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;!&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;write_profile_string(section,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;XX2&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;2writeOK&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;,file))&lt;br /&gt;    {&lt;br /&gt;        printf(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;write ini file fail\n&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;    }&lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;    {&lt;br /&gt;        printf(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;write ini file ok\n&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;    }&lt;br /&gt;   &lt;br /&gt;    &lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2923218862914453128-2148744006796457459?l=chenhao-nari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.cppblog.com/dyj057/archive/2006/01/24/3012.html' title='C/C++跨平台ini文件读写API (已更新)'/><link rel='replies' type='application/atom+xml' href='http://chenhao-nari.blogspot.com/feeds/2148744006796457459/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2923218862914453128&amp;postID=2148744006796457459' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/2148744006796457459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/2148744006796457459'/><link rel='alternate' type='text/html' href='http://chenhao-nari.blogspot.com/2007/09/cciniapi.html' title='C/C++跨平台ini文件读写API (已更新)'/><author><name>陈浩</name><uri>http://www.blogger.com/profile/14506725069676093869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2923218862914453128.post-3670811992762457691</id><published>2007-09-28T19:45:00.002+08:00</published><updated>2007-09-28T19:57:52.417+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><title type='text'>C++解析XML -- TinyXml</title><content type='html'>C++解析XML -- TinyXml&lt;br /&gt;   &lt;br /&gt;2007-05-21 16:53:34&lt;br /&gt;大 中 小&lt;br /&gt; zz from Internet&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;一、 TinyXml的特点&lt;br /&gt;&lt;br /&gt;TinyXml是一个基于DOM模型的、非验证的轻量级C++解释器。&lt;br /&gt;&lt;br /&gt;1. SAX和DOM&lt;br /&gt;&lt;br /&gt;目前XML的解析主要有两大模型：SAX和DOM。&lt;br /&gt;&lt;br /&gt;其中SAX是基于事件的，其基本工作流程是分析XML文档，当发现了一个新的元素时，产生一个对应事件，并调用相应的用户处理函数。这种方式占用内存少，速度快，但用户程序相应得会比较复杂。&lt;br /&gt;&lt;br /&gt;而DOM（文档对象模型），则是在分析时，一次性的将整个XML文档进行分析，并在内存中形成对应的树结构，同时，向用户提供一系列的接口来访问和编辑该树结构。这种方式占用内存大，速度往往慢于SAX，但可以给用户提供一个面向对象的访问接口，对用户更为友好。&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;2. 验证和非验证&lt;br /&gt;&lt;br /&gt;对于一个特定的XML文档而言，其正确性分为两个层次。首先是其格式应该符合 XML的基本格式要求，比如第一行要有声明，标签的嵌套层次必须前后一致等等，符合这些要求的文件，就是一个合格的XML文件，称作well- formatted。但除此之外，一个XML文档因其内容的不同还必须在语义上符合相应的标准，这些标准由相应的DTD文件或者Schema文件来定义，符合了这些定义要求的XML文件，称作valid。&lt;br /&gt;&lt;br /&gt;因此，解析器也分为两种，一种是验证的，即会跟据XML文件中的声明，用相应的DTD文件对XML文件进行校验，检查它是否满足DTD文件的要求。另一种是忽略DTD文件，只要基本格式正确，就可以进行解析。&lt;br /&gt;&lt;br /&gt;就我所知，验证的解析器通常都是比较重量级的。TinyXml不支持验证，但是体积很小，用在解析格式较为简单的XML文件，比如配置文件时，特别的合适。&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;二、 TinyXml的构建和使用&lt;br /&gt;1. 获取&lt;br /&gt;&lt;br /&gt;TinyXml首页在http://www.grinninglizard.com/tinyxml/index.html，从这里可以找到最新版本的源代码，目前的版本是 2.4.3 (截至2006.5.17).&lt;br /&gt;&lt;br /&gt;2. 构建&lt;br /&gt;&lt;br /&gt;TinyXml在构建时可以选择是否支持STL，选择的话，则可以使用std:: string，所以通常应在Windows上，TinyXml的源码包里提供了VC6的工程文件，直接用它就可以生成两个静该打开这个选项。态库（带 STL和不带STL），非常容易。唯一需要注意的是，默认生成的库是单线程的，如果用在多线程的项目中，需要改动一下配置，生成相应的多线程库。&lt;br /&gt;&lt;br /&gt;在Unix平台上，TinyXml的源码包里只提供了一个Makefile，对于典型的Linux系统，或装了gcc和gmake的其他Unix，这个Makefile足够用了，我在RH9和RHEL4上测试，简单的make就成功了。需要注意的有以下几点：默认的编译是不支持STL的，可以通过编辑Makefile的TINYXML_USE_STL := NO那一行，把NO改成YES就可以支持STL了；还有默认只生成了一个测试程序，没有生成任何库，如果要生成静态库的话，可以用ar命令，将生成的几个目标文件打包就行了，如果要生成动态库，则需要加上-fpic参数重新编译。&lt;br /&gt;&lt;br /&gt;3. 使用&lt;br /&gt;&lt;br /&gt;构建了相应的库之后，在使用了它们的工程中，只要在连接时把他们连上就行了。需要注意的是，如果需要STL支持，在编译用到了TinyXml的文件时，需要定义一个宏TIXML_USE_STL，对gcc，可以使用参数- DTIXML_USE_STL，对cl.exe（VC），可以使用参数/DTIXML_USE_STL，如果嫌麻烦，可以直接定义在 tinyxml.h文件里。&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;三、 TinyXml的编程模型&lt;br /&gt;&lt;br /&gt;1.类之间的关系&lt;br /&gt;&lt;br /&gt;TinyXml实现的时DOM访问模型，因此提供了一系列的类对应XML文件中的各个节点。主要类间的关系如下图所示：&lt;br /&gt;&lt;br /&gt;TiXmlBase：其它类的基类，是个抽象类&lt;br /&gt;&lt;br /&gt;TiXmlNode：表示一个节点，包含节点的一般方法，如访问自节点、兄弟节点、编辑自身、编辑子节点&lt;br /&gt;&lt;br /&gt;TiXmlDocument：表示整个XML文档，不对应其中某个特定的节点。&lt;br /&gt;&lt;br /&gt;TiXmlElement：表示元素节点，可以包含子节点和TiXmlAttribute&lt;br /&gt;&lt;br /&gt;TiXmlComment：表示注释&lt;br /&gt;&lt;br /&gt;TiXmlDeclaration：表示声明&lt;br /&gt;&lt;br /&gt;TiXmlText：表示文本节点&lt;br /&gt;&lt;br /&gt;TiXmlUnknown：表示未知节点，通常是出错了&lt;br /&gt;&lt;br /&gt;TiXmlAttribute：表示一个元素的属性&lt;br /&gt;&lt;br /&gt;下面是一个简单的例子：&lt;br /&gt;&lt;br /&gt;&lt;?xml version="1.0" encoding="utf-8" ?&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-This is only a sample--&gt;&lt;br /&gt;&lt;br /&gt;&lt;book&gt;&lt;br /&gt;&lt;br /&gt;    &lt;name&gt;TinyXml How To&lt;/name&gt;&lt;br /&gt;&lt;br /&gt;     &lt;price unit=”RMB”&gt;20&lt;/price&gt;&lt;br /&gt;&lt;br /&gt;       &lt;description&gt;Some words…&lt;/description&gt;&lt;br /&gt;&lt;br /&gt;&lt;/ book &gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;整个文档，对应TiXmlDocument&lt;br /&gt;&lt;br /&gt;book,name,price, description，都对应TiXmlElement&lt;br /&gt;&lt;br /&gt;第一行对应一个TiXmlDeclaration&lt;br /&gt;&lt;br /&gt;第二行对应一个TiXmlComment&lt;br /&gt;&lt;br /&gt;“TinyXml How To”对应一个TiXmlText&lt;br /&gt;&lt;br /&gt;unit则是price的一个TiXmlAttribute&lt;br /&gt;&lt;br /&gt;这些类与XML文件中的相应元素都有很好的对应关系，因此相信参照TinyXml的文档，可以很容易的掌握各个方法的使用。&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;2.  需要注意的问题&lt;br /&gt;&lt;br /&gt;各类之间的转换&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;由于各个节点类都从TiXmlNode继承，在使用时常常需要将 TiXmlNode*类型的指针转换为其派生类的指针，在进行这种转换时，应该首先使用由TiXmlNode类提供的一系列转换函数，如 ToElement(void)，而不是c++的dynamic_cast&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;检查返回值&lt;br /&gt;&lt;br /&gt;由于TinyXml是一个非校验的解析器，因此当解析一个文件时，很可能文件并不包含我们预期的某个节点，在这种情况下，TinyXml将返回空指针。因此，必须要对返回值进行检查，否则将很容易出现内存访问的错误。&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;如何重头建立一个XML文件&lt;br /&gt;&lt;br /&gt;先建立一个TiXmlDocument对象，然后，载入某个模板，或者直接插入一个节点作为根节点，接着就可以像打开一个已有的XML文件那样对它进行操作了。&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;四、总结&lt;br /&gt;&lt;br /&gt;TinyXml最大的特点就是它很小，可以很方便的静态连接到程序里。对于像配置文件、简单的数据文件这类文件的解析，它很适合。但是由于它是非验证的，因此需要在程序里做许多检查工做，加重了程序编写的负担。因此对于复杂的XML文件，我觉得最好还是用验证的解析器来处理。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2923218862914453128-3670811992762457691?l=chenhao-nari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.sina.com.cn/s/blog_53d9f7e90100084m.html' title='C++解析XML -- TinyXml'/><link rel='replies' type='application/atom+xml' href='http://chenhao-nari.blogspot.com/feeds/3670811992762457691/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2923218862914453128&amp;postID=3670811992762457691' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/3670811992762457691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/3670811992762457691'/><link rel='alternate' type='text/html' href='http://chenhao-nari.blogspot.com/2007/09/cxml-tinyxml.html' title='C++解析XML -- TinyXml'/><author><name>陈浩</name><uri>http://www.blogger.com/profile/14506725069676093869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2923218862914453128.post-9164185100508631513</id><published>2007-09-28T19:45:00.001+08:00</published><updated>2007-09-28T19:49:09.977+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><title type='text'>解析XML的利器-TinyXML</title><content type='html'>解析XML的利器-TinyXML&lt;br /&gt;&lt;br /&gt;happykevins&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;l        TinyXML简介&lt;br /&gt;&lt;br /&gt;TinyXML是目前非常流行的一款基于DOM模型的XML解析器，简单易用且小巧玲珑，非常适合存储简单数据，配置文件，对象序列化等数据量不是很大的操作，尤其适用于游戏开发，在Nebula2，CEGUI等开源项目中都有使用。本文的目的就是把这个好东东分享给大家：）&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;l        关于DOM和SAX&lt;br /&gt;&lt;br /&gt;DOM - Document Object Model&lt;br /&gt;&lt;br /&gt;将整篇XML文档一次性解析并读入内存，保存为一个对象供用户访问。&lt;br /&gt;&lt;br /&gt;SAX - Simple API for XML&lt;br /&gt;&lt;br /&gt;SAX的XML解析方式是基于事件回调的，解析器在每遇到一个XML元素时都会产生一个事件，并执行由用户提供的处理函数。&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;l        TinyXML类结构&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;[TiXmlBase] 所有TinyXML类的基类，保存该结点或属性在XML原文中的信息。&lt;br /&gt;&lt;br /&gt;[TiXmlAttribute] XML结点属性，一个键值对&lt;br /&gt;&lt;br /&gt;[TiXmlNode] XML结点的基类，封装了对XML文档树形结构进行操作和维护的方法&lt;br /&gt;&lt;br /&gt;[TiXmlComment] XML注释结点&lt;br /&gt;&lt;br /&gt;[TiXmlDeclaration] XML声明结点&lt;br /&gt;&lt;br /&gt;[TiXmlDocument] XML文档结点（一般为一篇XML文档的根结点）&lt;br /&gt;&lt;br /&gt;[TiXmlElement] XML结点&lt;br /&gt;&lt;br /&gt;[TiXmlText] XML文本结点&lt;br /&gt;&lt;br /&gt;[TiXmlUnknown] 含有未知标签的XML结点&lt;br /&gt;&lt;br /&gt;[TiXmlHandle] 封装了一个结点的指针，在对该指针进行查询时将自动进行空指针交验&lt;br /&gt;&lt;br /&gt;[TiXmlVisitor] 遍历器接口，描述了每个节点的处理方法，由子类实现&lt;br /&gt;&lt;br /&gt;[TiXmlPrinter] Printer遍历器&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;l        读取XML文件&lt;br /&gt;&lt;br /&gt;TiXmlDocument doc("test.xml");&lt;br /&gt;&lt;br /&gt;doc.LoadFile("test.xml");&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;l        写入XML文件&lt;br /&gt;&lt;br /&gt;TiXmlDocument doc;&lt;br /&gt;&lt;br /&gt;……&lt;br /&gt;&lt;br /&gt;doc.SaveFile("test.xml");&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;l        遍历XML文档&lt;br /&gt;&lt;br /&gt;首先以FirstChild获得第一个自节点，然后以NextSibling获取下个兄弟节点；如此递归遍历所有节点即可。&lt;br /&gt;&lt;br /&gt;TiXmlNode::FirstChild();&lt;br /&gt;&lt;br /&gt;TiXmlNode::NextSibling();&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;l        构造XML文档&lt;br /&gt;&lt;br /&gt;将指定节点插入当前节点子节点队列的末尾&lt;br /&gt;&lt;br /&gt;TiXmlNode::LinkEndChild();&lt;br /&gt;&lt;br /&gt;设置指定节点的属性&lt;br /&gt;&lt;br /&gt;TiXmlElement::SetAttribute();&lt;br /&gt;&lt;br /&gt;TiXmlElement::SetDoubleAttribute();&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;由于TinyXML本身就是以简单著称，所以我也不啰哩吧嗦介绍太多了，如果需要更多资料就去以下网址找吧：）&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;官方主页：&lt;br /&gt;&lt;br /&gt;http://www.grinninglizard.com/tinyxml/&lt;br /&gt;&lt;br /&gt;在线文档：&lt;br /&gt;&lt;br /&gt;http://www.grinninglizard.com/tinyxmldocs/index.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2923218862914453128-9164185100508631513?l=chenhao-nari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.yuanma.org/data/2006/1123/article_1847.htm' title='解析XML的利器-TinyXML'/><link rel='replies' type='application/atom+xml' href='http://chenhao-nari.blogspot.com/feeds/9164185100508631513/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2923218862914453128&amp;postID=9164185100508631513' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/9164185100508631513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/9164185100508631513'/><link rel='alternate' type='text/html' href='http://chenhao-nari.blogspot.com/2007/09/xml-tinyxml.html' title='解析XML的利器-TinyXML'/><author><name>陈浩</name><uri>http://www.blogger.com/profile/14506725069676093869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2923218862914453128.post-5257902875746331237</id><published>2007-09-28T19:45:00.000+08:00</published><updated>2007-09-28T19:48:17.103+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><title type='text'>TinyXml在游戏中的作用</title><content type='html'>TinyXml在游戏中的作用&lt;br /&gt;&lt;br /&gt;TinyXml在游戏中的作用&lt;br /&gt;&lt;br /&gt;作者：akinggw&lt;br /&gt;&lt;br /&gt;前言&lt;br /&gt;&lt;br /&gt;假如我们要在客户端连接拥有不同IP地址的游戏服务器，我们应该怎样做呢？《传奇》中是使用一个INI文件来定义。这是一个好的办法，我们每次使用时从外部导入我们的数据，而不用每次修改时都编程一次。而我们今天在这里要讲解的是用XML文件来设置，关于什么是XML，请参考其它文章。&lt;br /&gt;许多人将 XML用到很多需要活动设置的应用，比如服务器参数的设置，玩家数据的管理（最近才发现的，原来以为是在数据库中进行管理的，后来发现XML文件也能管理玩家数据，并且比操作数据库要方便的多）。还有人甚至用XML文件来设置窗口界面。看来掌握XML是非常有意义的。&lt;br /&gt;&lt;br /&gt;TinyXml&lt;br /&gt;&lt;br /&gt;我在这里并不是要讲解如何使用XML，或在网页中使用它。而是要在C/C++中使用它。详细一点就是在C/C++嵌套使用XML文件。&lt;br /&gt;要在C/C++中使用XML文件，你就必须需要一个能分析XML文件的函数库。在这方面有很多，比如libxml2,tinxml,expat等等很多。而我使用的是tinyxml，为什么要使用它呢？因为它很小巧，只有两个头文件和四个CPP文件。正如作者在tinyxml官方文件中所说的，如果你不是想在浏览器中使用XML，那么tinyxml非常适合你。&lt;br /&gt;&lt;br /&gt;我们下面来看一下tinyxml是如何在C/C++中建立XML文件的。&lt;br /&gt;&lt;br /&gt;            char floader[200],buffer[200];&lt;br /&gt;    &lt;br /&gt;TiXmlDocument* m_xmlDoc = new TiXmlDocument();&lt;br /&gt;&lt;br /&gt;TiXmlElement xElement("player");&lt;br /&gt;sprintf(buffer,"%d", 1);&lt;br /&gt;xElement.SetAttribute("admin", buffer);&lt;br /&gt;&lt;br /&gt;TiXmlElement xPos("pos");&lt;br /&gt;&lt;br /&gt;sprintf(buffer,"%d",2);&lt;br /&gt;xPos.SetAttribute("x", buffer);&lt;br /&gt;&lt;br /&gt;sprintf(buffer,"%d",3);&lt;br /&gt;xPos.SetAttribute("y", buffer);&lt;br /&gt;&lt;br /&gt;sprintf(buffer,"%d",4);&lt;br /&gt;xPos.SetAttribute("zone", buffer);&lt;br /&gt;&lt;br /&gt;xElement.InsertEndChild(xPos);&lt;br /&gt;m_xmlDoc-&gt;InsertEndChild(xElement);&lt;br /&gt;&lt;br /&gt;sprintf(floader,"%s.xml", "antking");&lt;br /&gt;m_xmlDoc-&gt;SaveFile(floader);&lt;br /&gt;&lt;br /&gt;delete m_xmlDoc;&lt;br /&gt;&lt;br /&gt;这段简单的代码的作用就是将用户数据保存在XML文件中。不同的是我对其做了一些简化。&lt;br /&gt;&lt;br /&gt;这段代码的作用就是先建立一个XML文件句柄。&lt;br /&gt;&lt;br /&gt;TiXmlDocument* m_xmlDoc = new TiXmlDocument();&lt;br /&gt;&lt;br /&gt;然后建立一个成员。&lt;br /&gt;&lt;br /&gt;TiXmlElement xElement("player");&lt;br /&gt;sprintf(buffer,"%d", 1);&lt;br /&gt;xElement.SetAttribute("admin", buffer);&lt;br /&gt;&lt;br /&gt;然后再建立一个成员。&lt;br /&gt;&lt;br /&gt;TiXmlElement xPos("pos");&lt;br /&gt;&lt;br /&gt;sprintf(buffer,"%d",2);&lt;br /&gt;xPos.SetAttribute("x", buffer);&lt;br /&gt;&lt;br /&gt;sprintf(buffer,"%d",3);&lt;br /&gt;xPos.SetAttribute("y", buffer);&lt;br /&gt;&lt;br /&gt;sprintf(buffer,"%d",4);&lt;br /&gt;xPos.SetAttribute("zone", buffer);&lt;br /&gt;&lt;br /&gt;这个成员包含3个属性。&lt;br /&gt;&lt;br /&gt;接下来是将这个成员连接成上一个成员的子结点。&lt;br /&gt;&lt;br /&gt;xElement.InsertEndChild(xPos);&lt;br /&gt;&lt;br /&gt;然后再把上一个结点连接成为XML文件的子结点。&lt;br /&gt;&lt;br /&gt;m_xmlDoc-&gt;InsertEndChild(xElement);&lt;br /&gt;&lt;br /&gt;最后保存这个文件。&lt;br /&gt;sprintf(floader,"%s.xml", "antking");&lt;br /&gt;m_xmlDoc-&gt;SaveFile(floader);&lt;br /&gt;&lt;br /&gt;释放句柄。&lt;br /&gt;&lt;br /&gt;delete m_xmlDoc;&lt;br /&gt;&lt;br /&gt;这就是创建XML文件的过程。这段代码将产生一个文件，文件内容如下：&lt;br /&gt;&lt;br /&gt;&lt;player admin="1"&gt;&lt;br /&gt;    &lt;pos x="2" y="3" zone="4" /&gt;&lt;br /&gt;&lt;/player&gt;&lt;br /&gt;&lt;br /&gt;它产生的结构可以用一棵树来表示，见下图：&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;接下来，我们看一下如何从上面这个XML文件中读出数据。&lt;br /&gt;&lt;br /&gt;    char floader[200],buffer[200];&lt;br /&gt;    &lt;br /&gt;    TiXmlDocument* m_xmlDoc;&lt;br /&gt;int admin1,x1,y1,z1;&lt;br /&gt;&lt;br /&gt;sprintf(floader,"%s.xml", "antking");&lt;br /&gt;&lt;br /&gt;m_xmlDoc = new TiXmlDocument(floader);&lt;br /&gt;&lt;br /&gt;if (m_xmlDoc-&gt;LoadFile())&lt;br /&gt;{&lt;br /&gt;TiXmlElement *xPlayer = 0;&lt;br /&gt;xPlayer = m_xmlDoc-&gt;FirstChildElement("player");&lt;br /&gt;&lt;br /&gt;if (xPlayer)&lt;br /&gt;{&lt;br /&gt;if (xPlayer-&gt;Attribute("admin"))&lt;br /&gt;admin1= (bool)atoi(xPlayer-&gt;Attribute("admin"));&lt;br /&gt;&lt;br /&gt;TiXmlElement *xZone = 0;&lt;br /&gt;xZone = xPlayer-&gt;FirstChildElement("pos");&lt;br /&gt;&lt;br /&gt;x1 = (int)atoi(xZone-&gt;Attribute("x"));&lt;br /&gt;y1 = (int)atoi(xZone-&gt;Attribute("y"));&lt;br /&gt;z1 = (int)atoi(xZone-&gt;Attribute("zone"));&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;delete m_xmlDoc;&lt;br /&gt;printf("%d,%d,%d,%d",admin1,x1,y1,z1);&lt;br /&gt;&lt;br /&gt;这段代码的意思就是，先建立一个文件句柄，如果句柄建立成功就打开一个XML文件。XML文件打开后，先得到它的第一个子结点，如果子结点存在，得到这个结点的属性。然后又打开这个结点的第一个子结点，读出其中的数据。最后关闭文件句柄。&lt;br /&gt;&lt;br /&gt;关于更多内容请访问金桥科普网站（ http://popul.jqcq.com ; ）游戏开发栏目，如果你需要游戏开发方面的书籍请参考金桥书城游戏频道（http://book.jqcq.com/category/1_70_740.html ;）。 如果你在阅读本篇文章时有什么好的建议请来信给我，我的E_mail: akinggw@126.com. 如果你在使用SDL时有什么问题，请到金桥科普网站（http://popul.jqcq.com ; ）游戏开发栏目，我将详细地为你解答。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2923218862914453128-5257902875746331237?l=chenhao-nari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://bbs.gameres.com/showthread.asp?postid=336835' title='TinyXml在游戏中的作用'/><link rel='replies' type='application/atom+xml' href='http://chenhao-nari.blogspot.com/feeds/5257902875746331237/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2923218862914453128&amp;postID=5257902875746331237' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/5257902875746331237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/5257902875746331237'/><link rel='alternate' type='text/html' href='http://chenhao-nari.blogspot.com/2007/09/tinyxml_28.html' title='TinyXml在游戏中的作用'/><author><name>陈浩</name><uri>http://www.blogger.com/profile/14506725069676093869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2923218862914453128.post-7947083691629405741</id><published>2007-09-28T19:43:00.000+08:00</published><updated>2007-09-28T19:45:08.339+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><title type='text'>有关TinyXML使用的简单总结</title><content type='html'>&lt;h2&gt;    &lt;a id="viewpost1_TitleUrl" href="http://www.cnblogs.com/freecoder/archive/2006/08/07/TinyXmlStapleA.html"&gt;有关TinyXML使用的简单总结&lt;/a&gt;   &lt;/h2&gt;       这次使用了&lt;span style="font-family: Tahoma;"&gt;TinyXML&lt;/span&gt;后，觉得这个东西真是不错，于是将使用方法坐下总结来和大家分享。&lt;br /&gt;    该解析库在开源网站（&lt;a href="http://sourceforge.net/"&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;http://sourceforge.net&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt; ）上有下载，在本Blog也提供下载（&lt;a href="http://www.cnblogs.com/Files/freecoder/tinyxml_2_4_3.zip"&gt;&lt;strong style="color: red;"&gt;下载TinyXML&lt;/strong&gt;&lt;/a&gt;）&lt;br /&gt;    &lt;span style="font-family: Tahoma;"&gt;TinyXML&lt;/span&gt;是一个开源的解析&lt;span style="font-family: Tahoma;"&gt;XML&lt;/span&gt;的解析库，能够用于&lt;span style="font-family: Tahoma;"&gt;C++&lt;/span&gt;，能够在&lt;span style="font-family: Tahoma;"&gt;Windows&lt;/span&gt;或&lt;span style="font-family: Tahoma;"&gt;Linux&lt;/span&gt;中编译。这个解析库的模型通过解析&lt;span style="font-family: Tahoma;"&gt;XML&lt;/span&gt;文件，然后在内存中生成&lt;span style="font-family: Tahoma;"&gt;DOM&lt;/span&gt;模型，从而让我们很方便的遍历这课&lt;span style="font-family: Tahoma;"&gt;XML&lt;/span&gt;树。&lt;br /&gt;    &lt;span style="color: rgb(0, 204, 255);"&gt;&lt;strong&gt;注：DOM模型即文档对象模型，是将整个文档分成多个元素（如书、章、节、段等），并利用树型结构表示这些元素之间的顺序关系以及嵌套包含关系（理解html语言的读者会很容易理解这种树状模型）。&lt;/strong&gt;&lt;/span&gt;              &lt;br /&gt;    如下是一个XML片段：&lt;br /&gt;    &lt;strong style="color: rgb(0, 204, 255);"&gt;&lt;persons&gt;&lt;br /&gt;        &lt;person id="1"&gt;&lt;br /&gt;            &lt;name&gt;周星星&lt;/name&gt;&lt;br /&gt;            &lt;age&gt;20&lt;/age&gt;&lt;br /&gt;        &lt;/person&gt;&lt;br /&gt;        &lt;person id="2"&gt;&lt;br /&gt;            &lt;name&gt;白晶晶&lt;/name&gt;&lt;br /&gt;            &lt;age&gt;18&lt;/age&gt;&lt;br /&gt;        &lt;/person&gt;&lt;br /&gt;    &lt;/persons&gt;&lt;br /&gt;&lt;/strong&gt;    在TinyXML中，根据XML的各种元素来定义了一些类：&lt;br /&gt;        &lt;span style="color: rgb(0, 204, 255);"&gt;TiXmlBase&lt;/span&gt;：整个TinyXML模型的基类。&lt;br /&gt;                &lt;span style="color: rgb(0, 204, 255);"&gt;TiXmlAttribute&lt;/span&gt;：对应于XML中的元素的属性。&lt;br /&gt;               &lt;span style="color: rgb(0, 204, 255);"&gt; TiXmlNode&lt;/span&gt;：对应于DOM结构中的节点。&lt;br /&gt;                        &lt;span style="color: rgb(0, 204, 255);"&gt;TiXmlComment&lt;/span&gt;：对应于XML中的注释。&lt;br /&gt;                        &lt;span style="color: rgb(0, 204, 255);"&gt;TiXmlDeclaration&lt;/span&gt;：对应于XML中的申明部分，即&lt;？versiong="1.0" ?&gt;。&lt;br /&gt;                        &lt;span style="color: rgb(0, 204, 255);"&gt;TiXmlDocument&lt;/span&gt;：对应于XML的整个文档。&lt;br /&gt;                        &lt;span style="color: rgb(0, 204, 255);"&gt;TiXmlElement&lt;/span&gt;：对应于XML的元素。&lt;br /&gt;                        &lt;span style="color: rgb(0, 204, 255);"&gt;TiXmlText&lt;/span&gt;：对应于XML的文字部分。&lt;br /&gt;                        &lt;span style="color: rgb(0, 204, 255);"&gt;TiXmlUnknown&lt;/span&gt;：对应于XML的未知部分。&lt;br /&gt;        &lt;span style="color: rgb(0, 204, 255);"&gt;TiXmlHandler&lt;/span&gt;：定义了针对XML的一些操作。&lt;br /&gt;    那我们如何使用这些类以及他们的方法来操纵我们的XML呢？请看下面。&lt;br /&gt;    &lt;strong&gt;&lt;span style="font-size: 14pt;"&gt;&lt;em style="color: rgb(0, 204, 255);"&gt;一、读取XML(假设我们的Xml文档中的内容与上面的Xml内容一样)&lt;br /&gt;&lt;/em&gt;&lt;/span&gt;   &lt;span style="color: rgb(51, 102, 255);"&gt; //创建一个XML的文档对象&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;。&lt;/span&gt;&lt;br /&gt;    TiXmlDocument *myDocument = new TiXmlDocument("填上你的Xml文件名");&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;myDocument-&gt;LoadFile();&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(51, 102, 255);"&gt;//获得根元素，即Persons。&lt;/span&gt;&lt;br /&gt;    TiXmlElement *RootElement = myDocument.RootElement();&lt;br /&gt;   &lt;span style="color: rgb(51, 102, 255);"&gt; //输出根元素名称，即输出Persons。&lt;br /&gt;&lt;/span&gt;    cout &lt;&lt;&gt;Value() &lt;&lt; endl;&lt;br /&gt;    &lt;span style="color: rgb(51, 102, 255);"&gt;//获得第一个Person节点。&lt;br /&gt;&lt;/span&gt;    TiXmlElement *FirstPerson = RootElement-&gt;FirstChildElement();&lt;br /&gt;   &lt;span style="color: rgb(51, 102, 255);"&gt; //获得第一个Person的name节点和age节点和ID属性。&lt;/span&gt;&lt;br /&gt;    TiXmlElement *NameElement = FirstPerson-&gt;FirstChildElement();&lt;br /&gt;    TiXmlElement *AgeElement = NameElement-&gt;NextSiblingElement();&lt;br /&gt;    TiXmlAttribute *IDAttribute = FirstPerson-&gt;FirstAttribute();&lt;br /&gt;   &lt;span style="color: rgb(51, 102, 255);"&gt; //输出第一个Person的name内容，即周星星；age内容，即20；ID属性，即1。&lt;br /&gt;&lt;/span&gt;    cout &lt;&lt;&gt;FirstChild()-&gt;Value &lt;&lt; endl;&lt;br /&gt;    cout &lt;&lt;&gt;FirstChild()-&gt;Value &lt;&lt; endl;&lt;br /&gt;    cout &lt;&lt;&gt;Value() &lt;&lt;&gt;&lt;br /&gt;   &lt;br /&gt;    看，读取XML是不是很简单阿，和Java的XML解析库非常的相似，就是名字改了一下而已。&lt;br /&gt;    &lt;span style="font-size: 14pt; color: rgb(0, 204, 255);"&gt;&lt;em&gt;&lt;strong&gt;二、生成XML内容&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(51, 102, 255);"&gt; &lt;/span&gt;&lt;strong&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;//创建一个XML的文档对象。&lt;br /&gt;&lt;/span&gt;    TiXmlDocument *myDocument = new TiXmlDocument();&lt;br /&gt;    &lt;span style="color: rgb(51, 102, 255);"&gt;//创建一个根元素并连接。&lt;br /&gt;&lt;/span&gt;    TiXmlElement *RootElement = new TiXmlElement("Persons");&lt;br /&gt;    myDocument-&gt;LinkEndChild(RootElement);&lt;br /&gt;    &lt;span style="color: rgb(51, 102, 255);"&gt;//创建一个Person元素并连接。&lt;br /&gt;&lt;/span&gt;    TiXmlElement *PersonElement = new TiXmlElement("Person");&lt;br /&gt;    RootElement-&gt;LinkEndChild(PersonElement);&lt;br /&gt;    &lt;span style="color: rgb(51, 102, 255);"&gt;//设置Person元素的属性。&lt;br /&gt;&lt;/span&gt;    PersonElement-&gt;SetAttribute("ID", "1");&lt;br /&gt;    &lt;span style="color: rgb(51, 102, 255);"&gt;//创建name元素、age元素并连接。&lt;/span&gt;&lt;br /&gt;    TiXmlElement *NameElement = new TiXmlElement("name");&lt;br /&gt;    TiXmlElement *AgeElement = new TiXmlElement("age");&lt;br /&gt;    PersonElement-&gt;LinkEndChild(NameElement);&lt;br /&gt;    PersonElement-&gt;LinkEndChild(AgeElement);&lt;br /&gt;    &lt;span style="color: rgb(51, 102, 255);"&gt;//设置name元素和age元素的内容并连接。&lt;/span&gt;&lt;br /&gt;    TiXmlText *NameContent = new TiXmlText("周星星");&lt;br /&gt;    TiXmlText *AgeContent = new TiXmlText("20");&lt;br /&gt;    NameElement-&gt;LinkEndChild(NameContent);&lt;br /&gt;    AgeElement-&gt;LinkEndChild(AgeContent);&lt;br /&gt;    &lt;span style="color: rgb(51, 102, 255);"&gt;//保存到文件&lt;/span&gt;&lt;br /&gt;    myDocument-&gt;SaveFile("要保存的xml文件名");&lt;br /&gt;&lt;/strong&gt;    这样，便创建了一个如下的xml文件：&lt;br /&gt;    &lt;strong style="color: rgb(0, 204, 255);"&gt;&lt;persons&gt;&lt;br /&gt;        &lt;person id="1"&gt;&lt;br /&gt;            &lt;name&gt;周星星&lt;/name&gt;&lt;br /&gt;            &lt;age&gt;20&lt;/age&gt;&lt;br /&gt;        &lt;/person&gt;&lt;br /&gt;    &lt;/persons&gt;&lt;br /&gt;&lt;/strong&gt;   &lt;br /&gt;    是不是很简单啊？在这里我只是简单的对TinyXml的使用作了介绍，欢迎各位提问留言，我会尽力解答各位的问题。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2923218862914453128-7947083691629405741?l=chenhao-nari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.cnblogs.com/freecoder/archive/2006/08/07/TinyXmlStapleA.html' title='有关TinyXML使用的简单总结'/><link rel='replies' type='application/atom+xml' href='http://chenhao-nari.blogspot.com/feeds/7947083691629405741/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2923218862914453128&amp;postID=7947083691629405741' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/7947083691629405741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/7947083691629405741'/><link rel='alternate' type='text/html' href='http://chenhao-nari.blogspot.com/2007/09/tinyxml.html' title='有关TinyXML使用的简单总结'/><author><name>陈浩</name><uri>http://www.blogger.com/profile/14506725069676093869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2923218862914453128.post-7375318754051599888</id><published>2007-09-27T17:04:00.000+08:00</published><updated>2007-09-27T17:05:12.096+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='memory leak'/><title type='text'>如何监测内存泄漏</title><content type='html'>&lt;strong&gt;&lt;b&gt;如何监测内存泄漏&lt;/b&gt;&lt;/strong&gt;                                                                                                                                                                              &lt;table class="docParameter" border="0" cellpadding="0" cellspacing="6" width="100%"&gt;                   &lt;tbody&gt;                     &lt;tr&gt;                        &lt;td&gt; &lt;table align="center" border="0" cellpadding="1" cellspacing="0" width="100%"&gt;                           &lt;tbody&gt;                             &lt;tr align="right"&gt;                                &lt;td colspan="2" height="24" width="100%"&gt;&lt;b&gt;&lt;span style="color:#000000;"&gt;                                  作者&lt;/span&gt;&lt;/b&gt;&lt;span style="color:#000000;"&gt;：未知                                  点击：0 &lt;/span&gt;&lt;/td&gt;                             &lt;/tr&gt;                           &lt;/tbody&gt;                         &lt;/table&gt;                         &lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;                           &lt;tbody&gt;&lt;tr&gt;                              &lt;td bgcolor="#cccccc"&gt;&lt;img src="http://www.west263.com/images/sp_05.gif" height="1" width="1" /&gt;&lt;/td&gt;                           &lt;/tr&gt;                         &lt;/tbody&gt;&lt;/table&gt;                         &lt;table class="ButtonBox" bgcolor="#f2f6fb" border="0" cellpadding="12" cellspacing="0" width="100%"&gt;                           &lt;tbody&gt;&lt;tr&gt;                                                     &lt;td&gt;　　西部数码-全国虚拟主机10强！20余项&lt;a href="http://www.west263.com/"&gt;虚拟主机&lt;/a&gt;管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!&lt;a href="http://www.west263.com/"&gt;虚拟主机&lt;/a&gt;可在线rar解压,自动数据恢复设置虚拟目录等.&lt;a href="http://www.west999.com/"&gt;虚拟主机&lt;/a&gt;免费赠送访问统计,企业邮局.Cn域名注册58元/年,空间150元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!&lt;/td&gt;                           &lt;/tr&gt;                         &lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;                     &lt;/tr&gt;                   &lt;/tbody&gt;                 &lt;/table&gt;                 &lt;table align="center" border="0" cellpadding="0" cellspacing="5" height="40" width="100%"&gt;                   &lt;tbody&gt;&lt;tr&gt;                      &lt;td align="center"&gt;&lt;img src="http://www.west263.com/images/imageswestlogo.gif" height="60" width="468" /&gt;&lt;/td&gt;                   &lt;/tr&gt;                   &lt;/tbody&gt;&lt;tbody&gt;                     &lt;tr&gt;                        &lt;td align="center"&gt;  文章页数：&lt;a class="page" href="http://www.west263.com/www/info/70714-1.htm"&gt;[1]&lt;/a&gt;  &lt;/td&gt;                     &lt;/tr&gt;                   &lt;/tbody&gt;                 &lt;/table&gt;                                    &lt;table border="0" cellpadding="0" cellspacing="11" width="100%"&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;                      &lt;td style="font-size: 14px; line-height: 16pt;"&gt; &lt;div align="center"&gt;                          &lt;script type="text/javascript"&gt;&lt;!-- google_ad_client = "pub-3069335119421557"; google_ad_width = 468; google_ad_height = 60; google_ad_format = "468x60_as"; google_ad_type = "text_image"; google_ad_channel =""; //--&gt;&lt;/script&gt;                         &lt;script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt; &lt;/script&gt;&lt;iframe style="display: none;" name="google_ads_frame" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-3069335119421557&amp;amp;dt=1190883113296&amp;amp;lmt=1189569869&amp;amp;format=468x60_as&amp;amp;output=html&amp;amp;correlator=1190883113296&amp;amp;url=http%3A%2F%2Fwww.west263.com%2Fwww%2Finfo%2F70714-1.htm&amp;amp;ad_type=text_image&amp;amp;ref=http%3A%2F%2Fwww.google.com%2Fsearch%3Fq%3D%25E5%2586%2585%25E5%25AD%2598%25E6%25B3%2584%25E6%25BC%258F%2B%25E5%258A%25A8%25E6%2580%2581%25E6%25A3%2580%25E6%25B5%258B%26btnG%3DSearch%26hl%3Den%26client%3Dfirefox%26rls%3Dorg.mozilla%253Azh-CN%253Aofficial%26hs%3D7HU&amp;amp;cc=100&amp;amp;ga_vid=190923175.1190883113&amp;amp;ga_sid=1190883113&amp;amp;ga_hid=1441638474&amp;amp;flash=9&amp;amp;u_h=1024&amp;amp;u_w=1280&amp;amp;u_ah=964&amp;amp;u_aw=1280&amp;amp;u_cd=32&amp;amp;u_tz=480&amp;amp;u_his=1&amp;amp;u_java=true&amp;amp;u_nplug=18&amp;amp;u_nmime=58" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" frameborder="0" height="60" scrolling="no" width="468"&gt;&lt;/iframe&gt;                       &lt;/div&gt;&lt;/td&gt;                   &lt;/tr&gt;                   &lt;/tbody&gt;&lt;tbody&gt;                     &lt;tr valign="top"&gt;                        &lt;td style="font-size: 14px; line-height: 16pt;"&gt; &lt;div id="content" class="content"&gt;版权申明&lt;br /&gt;本文可以被自由转载，但是必须遵循如下版权约定：&lt;br /&gt;1、保留本约定，并保留在文章的开头部分。&lt;br /&gt;2、不能任意修改文章内容，或者删节，增加。如果认为本文内容有不当之处需要修改，请&lt;br /&gt;与作者联系。&lt;br /&gt;3、不能摘抄本文的内容，必须全文发表或者引用。&lt;br /&gt;4、必须保留作者署名、注明文章出处。（本文授权给www.linuxaid.com.cn）&lt;br /&gt;5、如不遵守本规定，则无权转载本文。&lt;br /&gt;&lt;br /&gt;作者&lt;br /&gt;ariesram&lt;br /&gt;电子邮件地址&lt;br /&gt;ariesram@linuxaid.com.cn, 或 ariesram@may10.ca&lt;br /&gt;本文及本人所有文章均收集在bambi.may10.ca/~ariesram/articles/中。&lt;br /&gt;本文授权给www.linuxaid.com.cn。&lt;br /&gt;&lt;br /&gt;正文：&lt;br /&gt;我曾经参与过一个比较大的项目，在这个项目里面，我们没有一个完全确定的设计文档，所以程序的实现常常变动。虽然我们有一个比较灵活的框架，但是从程序的 角度来讲，它使我们的程序非常的混乱。直到发布的日期临近，我们还没有一个稳定的可以用来做alpha测试的版本。所以我们必须尽快的删除掉无用的代码， 让这个版本足够的稳定。但是，在这个没有足够规范的软件公司，我们没有时间也没有足够的精力来做边界测试之类的工作。所以我们只能采用变通的办法。在软件 中最大的问题就是内存泄漏。因为往往出现这样的情况，我们在一段代码中分配了内存，但是却没有释放它。这造成了很大的问题。我们需要一个简单的解决方案， 能够简单的编译进这个项目，在运行的时候，它能够产生一个没有被释放的内存的列表，用这个列表，我们能够改正程序的错误。这就是我们称之为内存跟踪的方 法。首先，我们需要一种代码，能够被加入到源代码中去，而且这种代码能够被重用。代码重用是一种很重要的特性，能够节省大量的时间和金钱以及程序员的劳 动。另外，我们的这种代码必须简单，因为我们当时已经没有那么多的时间和精力去完全重看一遍所有的代码来重新编写以及改正错误从而使内存跟踪能够起作用。&lt;br /&gt;&lt;br /&gt;好在，我们总能够找到解决的办法。首先，我们检查了代码，发现所有的代码都是用new来分配内存，用delete来释放内存。那么，我们能够用一 个全程替换，来替换掉所有的new和delete操作符吗？不能。因为代码的规模太大了，那样做除了浪费时间没有别的任何好处。好在我们的源代码是用C+ +来写成的，所以，这意味着没有必要替换掉所有的new和delete,而只用重载这两个操作符。对了，值用重载这两个操作符，我们就能在分配和释放内存 之前做点什么。这是一个绝对的好消息。我们也知道该如何去做。因为，MFC也是这么做的。我们需要做的是：跟踪所有的内存分配和交互引用以及内存释放。我 们的源代码使用Visual C++写成，当然这种解决方法也可以很轻松的使用在别的C++代码里面。要做的第一件事情是重载new和delete操作符，它们将会在所有的代码中被使 用到。我们在stdafx.h中，加入：&lt;br /&gt;#ifdef _DEBUG&lt;br /&gt;inline void * __cdecl operator new(unsigned int size,&lt;br /&gt;const char *file, int line)&lt;br /&gt;{&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;inline void __cdecl operator delete(void *p)&lt;br /&gt;{&lt;br /&gt;};&lt;br /&gt;#endif&lt;br /&gt;这样，我们就重载了new和delete操作符。我们用$ifdef和#endif来包住这两个重载操作符，这样，这两个操作符就不会在发布版本中出现。 看一看这段代码，会发现，new操作符有三个参数，它们是，分配的内存大小，出现的文件名，和行号。这对于寻找内存泄漏是必需的和重要的。否则，就会需要 很多时间去寻找它们出现的确切地方。加入了这段代码，我们的调用new()的代码仍然是指向只接受一个参数的new操作符，而不是这个接受三个参数的操作 符。另外，我们也不想记录所有的new操作符的语句去包含__FILE__和__LINE__参数。我们需要做的是自动的让所有的接受一个参数的new操 作符调用接受三个参数的new操作符。这一点可以用一点点小的技巧去做，例如下面的这一段宏定义，&lt;br /&gt;#ifdef _DEBUG&lt;br /&gt;#define DEBUG_NEW new(__FILE__, __LINE__)&lt;br /&gt;#else&lt;br /&gt;#define DEBUG_NEW new&lt;br /&gt;#endif&lt;br /&gt;#define new DEBUG_NEW&lt;br /&gt;现在我们所有的接受一个参数的new操作符都成为了接受三个参数的new操作符号，__FILE__和__LINE__被预编译器自动的插入到其中了。然 后，就是作实际的跟踪了。我们需要加入一些例程到我们的重载的函数中去，让它们能够完成分配内存和释放内存的工作。这样来做， #ifdef _DEBUG&lt;br /&gt;inline void * __cdecl operator new(unsigned int size,&lt;br /&gt;const char *file, int line)&lt;br /&gt;{&lt;br /&gt;void *ptr = (void *)malloc(size);&lt;br /&gt;AddTrack((DWORD)ptr, size, file, line);&lt;br /&gt;return(ptr);&lt;br /&gt;};&lt;br /&gt;inline void __cdecl operator delete(void *p)&lt;br /&gt;{&lt;br /&gt;RemoveTrack((DWORD)p);&lt;br /&gt;free(p);&lt;br /&gt;};&lt;br /&gt;#endif&lt;br /&gt;另外，还需要用相同的方法来重载new[]和delete[]操作符。这里就省略掉它们了。&lt;br /&gt;最后，我们需要提供一套函数AddTrack()和RemoveTrack()。我用STL来维护存储内存分配记录的连接表。&lt;br /&gt;这两个函数如下：&lt;br /&gt;typedef struct {&lt;br /&gt;DWORD address;&lt;br /&gt;DWORD size;&lt;br /&gt;char file[64];&lt;br /&gt;DWORD line;&lt;br /&gt;} ALLOC_INFO;&lt;br /&gt;&lt;br /&gt;typedef list AllocList;&lt;br /&gt;&lt;br /&gt;AllocList *allocList;&lt;br /&gt;&lt;br /&gt;void AddTrack(DWORD addr, DWORD asize, const char *fname, DWORD lnum)&lt;br /&gt;{&lt;br /&gt;ALLOC_INFO *info;&lt;br /&gt;&lt;br /&gt;if(!allocList) {&lt;br /&gt;allocList = new(AllocList);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;info = new(ALLOC_INFO);&lt;br /&gt;info-&gt;address = addr;&lt;br /&gt;strncpy(info-&gt;file, fname, 63);&lt;br /&gt;info-&gt;line = lnum;&lt;br /&gt;info-&gt;size = asize;&lt;br /&gt;allocList-&gt;insert(allocList-&gt;begin(), info);&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;void RemoveTrack(DWORD addr)&lt;br /&gt;{&lt;br /&gt;AllocList::iterator i;&lt;br /&gt;&lt;br /&gt;if(!allocList)&lt;br /&gt;return;&lt;br /&gt;for(i = allocList-&gt;begin(); i != allocList-&gt;end(); i++)&lt;br /&gt;{&lt;br /&gt;if((*i)-&gt;address == addr)&lt;br /&gt;{&lt;br /&gt;allocList-&gt;remove((*i));&lt;br /&gt;break;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;};&lt;br /&gt;现在，在我们的程序退出之前，allocList存储了没有被释放的内存分配。为了看到它们是什么和在哪里被分配的，我们需要打印出allocList中的数据。我使用了Visual C++中的Output窗口来做这件事情。&lt;br /&gt;void DumpUnfreed()&lt;br /&gt;{&lt;br /&gt;AllocList::iterator i;&lt;br /&gt;DWORD totalSize = 0;&lt;br /&gt;char buf[1024];&lt;br /&gt;&lt;br /&gt;if(!allocList)&lt;br /&gt;return;&lt;br /&gt;&lt;br /&gt;for(i = allocList-&gt;begin(); i != allocList-&gt;end(); i++) {&lt;br /&gt;sprintf(buf, "%-50s: LINE %d, ADDRESS %d %d unfreed ",&lt;br /&gt;(*i)-&gt;file, (*i)-&gt;line, (*i)-&gt;address, (*i)-&gt;size);&lt;br /&gt;OutputDebugString(buf);&lt;br /&gt;totalSize += (*i)-&gt;size;&lt;br /&gt;}&lt;br /&gt;sprintf(buf, "----------------------------------------------------------- ");&lt;br /&gt;OutputDebugString(buf);&lt;br /&gt;sprintf(buf, "Total Unfreed: %d bytes ", totalSize);&lt;br /&gt;OutputDebugString(buf);&lt;br /&gt;};&lt;br /&gt;现在我们就有了一个可以重用的代码，用来监测跟踪所有的内存泄漏了。这段代码可以用来加入到所有的项目中去。虽然它不会让你的程序看起来更好，但是起码它能够帮助你检查错误，让程序更加的稳定。&lt;br /&gt;&lt;img src="http://www.west263.com/www/down_info.asp?id=70714" border="0" height="1" width="1" /&gt;&lt;br /&gt;                          文章整理：西部数码--专业提供&lt;a href="http://www.west263.com/services/domain/"&gt;域名注册&lt;/a&gt;、&lt;a href="http://www.west263.com/"&gt;虚拟主机&lt;/a&gt;服务&lt;br /&gt;                          &lt;a href="http://www.west263.com/"&gt;http://www.west263.com&lt;/a&gt;&lt;br /&gt;                          以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息，谢谢! &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2923218862914453128-7375318754051599888?l=chenhao-nari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.west263.com/www/info/70714-1.htm' title='如何监测内存泄漏'/><link rel='replies' type='application/atom+xml' href='http://chenhao-nari.blogspot.com/feeds/7375318754051599888/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2923218862914453128&amp;postID=7375318754051599888' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/7375318754051599888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/7375318754051599888'/><link rel='alternate' type='text/html' href='http://chenhao-nari.blogspot.com/2007/09/blog-post_27.html' title='如何监测内存泄漏'/><author><name>陈浩</name><uri>http://www.blogger.com/profile/14506725069676093869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2923218862914453128.post-542888154589950289</id><published>2007-09-27T14:28:00.001+08:00</published><updated>2007-09-27T14:28:45.514+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='qt'/><title type='text'>Qt4.2.3编译记录</title><content type='html'>&lt;div class="posthead"&gt;    &lt;h2&gt;     &lt;a id="viewpost1_TitleUrl" class="singleposttitle" href="http://www.cppblog.com/chemz/archive/2007/06/19/26605.html"&gt;Qt4.2.3编译记录&lt;/a&gt;    &lt;/h2&gt;     Posted on 2007-06-19 09:27 &lt;a href="http://www.cppblog.com/chemz/"&gt;chemz&lt;/a&gt; 阅读(561) &lt;a href="http://www.cppblog.com/chemz/archive/2007/06/19/26605.html#Post"&gt;评论(1)&lt;/a&gt;  &lt;a href="http://www.cppblog.com/chemz/admin/EditPosts.aspx?postid=26605"&gt;编辑&lt;/a&gt; &lt;a href="http://www.cppblog.com/chemz/AddToFavorite.aspx?id=26605"&gt;收藏&lt;/a&gt; &lt;a href="http://www.cppblog.com/chemz/services/trackbacks/26605.aspx"&gt;引用&lt;/a&gt;  所属分类: &lt;a href="http://www.cppblog.com/chemz/category/3662.html"&gt;C++&lt;/a&gt;     &lt;img src="http://www.cppblog.com/chemz/aggbug/26605.html?webview=1" height="1" width="1" /&gt;     &lt;!-- &lt;rdf:rdf rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" dc="http://purl.org/dc/elements/1.1/" trackback="http://madskills.com/public/xml/rss/module/trackback/"&gt; &lt;rdf:description about="http://www.cppblog.com/chemz/archive/2007/06/19/26605.html" identifier="http://www.cppblog.com/chemz/archive/2007/06/19/26605.html" title="Qt4.2.3编译记录" ping="http://www.cppblog.com/chemz/services/trackbacks/26605.aspx"&gt; &lt;/rdf:RDF&gt; --&gt;    &lt;/div&gt;                                   Qt4.2.3编译记录&lt;br /&gt;    Qt已经发布了最新架构的版本Qt4了，目前的最新版本已经到了Qt4.3，由于原来还使用&lt;br /&gt;的是Qt3.3.4的版本，所以就Qt4种的2.3版进行了编译，准备升级到Qt4。这个编译过程一般&lt;br /&gt;而言还算是比较的简单，只是由于Visual Studio 2005在进行了SP1后引入了一个编译bug，&lt;br /&gt;导致编译Qt4时候会出现编译时错误，同时一般而言在Qt4.2.3的编译选项中包含了一些和&lt;br /&gt;Visual Studio2005默认不相同的选项（同时也是标准不太兼容的地方），所以现在将编译&lt;br /&gt;的具体过程进行详细的说明。&lt;br /&gt;&lt;br /&gt;1. 设置环境变量&lt;br /&gt;   首先肯定是要解压缩Qt4.2.3的源代码包到某个目录下（这里使用的是commercial版本），&lt;br /&gt;   如：D:\Qt\4.2.3\。然后在系统环境目录下添加一个QTDIR=D:\Qt\4.2.3环境变量，并且&lt;br /&gt;   在系统的PATH追加%QTDIR%\bin目录项，以使得可以找到编译后的库和应用程序。&lt;br /&gt;2. 应用Patch&lt;br /&gt;   Qt4中有两个地方需要进行修改才能够正常的编译，一个是关于编译选项的，另外一个是&lt;br /&gt;   关于源代码的。&lt;br /&gt;   2.1. 修改编译选项&lt;br /&gt;        进入到%QTDIR%\mkspecs\win32-msvc2005\目录下，打开qmake.conf文件找到19行的&lt;br /&gt;        QMAKE_CFLAGS = -nologo -Zm200 -Zc:wchar_t-，删除后面的-Zc:wchar_t-选项，&lt;br /&gt;        主要是为了保持标准兼容性以及和其他代码的兼容性，否则会出现Qt4中采用了&lt;br /&gt;        wchar_t的函数不能够接受没有-Zc:wchar_t选项下的wchar_t类型；&lt;br /&gt;   2.2. 修改源代码&lt;br /&gt;        进入到%QTDIR%\src\corelib\tools\目录下，打开qmap.h文件找到QMultiMap类的&lt;br /&gt;        定义，用如下的内容替换replace和insert函数：&lt;br /&gt;        typedef QMap&lt;key,&gt;::iterator QMap_iterator;&lt;br /&gt;        inline QMap_iterator replace(const Key &amp;amp;akey, const T &amp;amp;avalue){ return QMap&lt;key,&gt;::insert(akey, avalue); }&lt;br /&gt;        inline QMap_iterator insert(const Key &amp;amp;akey, const T &amp;amp;avalue){ return QMap&lt;key,&gt;::insertMulti(akey, avalue); }&lt;br /&gt;        并将下面的replace和insert函数的定义体给注释掉；&lt;br /&gt;        同样的打开qhash.h文件找到QMultiHash类的定义，用如下的内容替换replace和&lt;br /&gt;        insert函数：&lt;br /&gt;        typedef QHash&lt;key,&gt;::iterator QHash_iterator;&lt;br /&gt;        inline typename QHash_iterator replace(const Key &amp;amp;akey, const T &amp;amp;avalue){ return QHash&lt;key,&gt;::insert(akey, avalue); }&lt;br /&gt;        inline typename QHash_iterator insert(const Key &amp;amp;akey, const T &amp;amp;avalue){ return QHash&lt;key,&gt;::insertMulti(akey, avalue); }&lt;br /&gt;        并将下面的replace和insert函数的定义体给注释掉。&lt;br /&gt;        之所以要这样修改是因为Visual Studio2005的SP1所引入的bug导致的。&lt;br /&gt;3. 安装协议文件&lt;br /&gt;   要安装商业版本就必须具有安装商业的license，将.qt-license文件拷贝到用户的&lt;br /&gt;   %USERPROFILE%目录下，如：C:\Documents and Settings\Administrator\。&lt;br /&gt;4. 配置并编译&lt;br /&gt;   打开console窗口，并设置VC的环境变量，然后运行如下的配置命令：&lt;br /&gt;   configure -debug-and-release -no-stl -no-sql-sqlite -qt-libjpeg -qt-gif -platform win32-msvc2005&lt;br /&gt;   成功后就可以通过运行nmake来完成源代码的完全编译了。&lt;br /&gt;   上面的命令行中，根据你的要求可以自行调整，一般而言为了成功编译必须要包含的命令&lt;br /&gt;   选项是-debug-and-release和-platform win32-msvc2005两个，其他可以选择。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2923218862914453128-542888154589950289?l=chenhao-nari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.cppblog.com/chemz/archive/2007/06/19/26605.html' title='Qt4.2.3编译记录'/><link rel='replies' type='application/atom+xml' href='http://chenhao-nari.blogspot.com/feeds/542888154589950289/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2923218862914453128&amp;postID=542888154589950289' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/542888154589950289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/542888154589950289'/><link rel='alternate' type='text/html' href='http://chenhao-nari.blogspot.com/2007/09/qt423.html' title='Qt4.2.3编译记录'/><author><name>陈浩</name><uri>http://www.blogger.com/profile/14506725069676093869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2923218862914453128.post-3335968294340587324</id><published>2007-09-27T12:29:00.001+08:00</published><updated>2007-09-27T12:29:40.523+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS'/><category scheme='http://www.blogger.com/atom/ns#' term='qt'/><title type='text'>QT4 和 VS2005 SP1 编译错误 C2244</title><content type='html'>&lt;div class="itemHead"&gt;         &lt;div class="itemTitle" style="float: left;"&gt;             &lt;a href="http://www.huamang.com/xoops/modules/AMS/article.php?storyid=94"&gt;QT4 和 VS2005 SP1 编译错误 C2244&lt;/a&gt;         &lt;/div&gt;         &lt;div style="text-align: right;"&gt;          &lt;/div&gt;     &lt;/div&gt;     &lt;div class="itemInfo"&gt;         &lt;div class="itemPoster" style="float: left;"&gt;Author : &lt;a href="http://www.huamang.com/xoops/userinfo.php?uid=1"&gt;sanchaji2&lt;/a&gt;&lt;/div&gt;         &lt;div class="itemPoster" style="text-align: right;"&gt;Article ID : 94&lt;/div&gt;              &lt;div class="itemPoster" style="float: left;"&gt;Audience : Default&lt;/div&gt;         &lt;div class="itemPoster" style="text-align: right;"&gt;Version 1.00&lt;/div&gt;              &lt;div class="itemPostDate" style="float: left;"&gt;Published Date:  2007/8/7 6:49:30&lt;/div&gt;         &lt;div class="itemStats" style="text-align: right;"&gt;Reads : 32&lt;/div&gt;     &lt;/div&gt;                            一个BUG的修正，可能引入更多BUG的出现不仅仅是教科书上的套话。今天，我在重新编译QT商业版源代码时，就遇到了这样的一个例子。VS2005安装 SP1补丁后，编译QT4源代码（QT v4.2.2版），编译器报告很多模板方面的致命错误，导致编译失败。通过查询网络可知，这是SP1引入的BUG，微软已经发布了修正补丁，您可以在 &lt;a href="http://support.microsoft.com/kb/930198" target="_blank"&gt;http://support.microsoft.com/kb/930198&lt;/a&gt; 找到详细信息，另外，微软给出了该错误的详细描述，请参考 &lt;a dragover="true" href="http://support.microsoft.com/kb/928957" target="_blank"&gt;http://support.microsoft.com/kb/928957&lt;/a&gt; 。&lt;br /&gt;&lt;br /&gt;我解决这个问题是通过修改配置文件，使 QT 系统调用 INTEL C++ Compiler 来编译代码避开这个BUG。如果您坚持希望通过MSVC 2005 SP1编译QT源代码，请安装上面提及的补丁，或者参考 thought  的 文章  修改QT源代码。&lt;br /&gt;&lt;br /&gt;下面附上，我这里用到的 bin\qtvars.bat，如果您有微软的 KB930198 补丁，希望您能发送到我的电子邮箱 12985462 at QQ dot com ，谢谢！&lt;br /&gt;下面再附上，一份QT与VS2005-SP1的兼容性修正补丁，不用自己修改了！&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;@echo off&lt;br /&gt;rem&lt;br /&gt;rem This file is generated&lt;br /&gt;rem&lt;br /&gt;&lt;br /&gt;echo Setting up a Qt environment...&lt;br /&gt;echo -- QTDIR set to C:\Qt\4.2.2&lt;br /&gt;echo -- Added C:\Qt\4.2.2\bin to PATH&lt;br /&gt;echo -- QMAKESPEC set to win32-icc&lt;br /&gt;&lt;br /&gt;set QTDIR=C:\Qt\4.2.2&lt;br /&gt;set PATH=C:\Qt\4.2.2\bin;%PATH%&lt;br /&gt;set QMAKESPEC=win32-icc&lt;br /&gt;&lt;br /&gt;if not "%1"=="vsvars" goto END&lt;br /&gt;call "E:\Program Files\Intel\Compiler\C++\9.1\IA32\Bin\ICLVars.bat"&lt;br /&gt;:END&lt;br /&gt;&lt;br /&gt;if not "%1"=="vsstart" goto ENDSTARTVS&lt;br /&gt;call "E:\Program Files\Intel\Compiler\C++\9.1\IA32\Bin\ICLVars.bat"&lt;br /&gt;devenv /useenv&lt;br /&gt;:ENDSTARTVS&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;下面这份修正补丁来自日本一个专门说明这一问题的博客网页： &lt;a href="http://ashula.info/mt/d061216_qt4_msvc8_sp1_problem.html" target="_blank"&gt;http://ashula.info/mt/d061216_qt4_msvc8_sp1_problem.html&lt;/a&gt; 。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;下载: qt4-multi-map-hash-msvc8-sp1.diff&lt;br /&gt;diff -Naur tools_orig/qhash.h tools/qhash.h&lt;br /&gt;--- tools_orig/qhash.h 2006-12-17 03:53:53.406250000 +0900&lt;br /&gt;+++ tools/qhash.h 2006-12-17 05:16:20.921875000 +0900&lt;br /&gt;@@ -848,8 +848,11 @@&lt;br /&gt;QMultiHash() {}&lt;br /&gt;QMultiHash(const QHash &amp;amp;other) : QHash(other) {}&lt;br /&gt;&lt;br /&gt;- inline typename QHash::iterator replace(const Key &amp;amp;key, const T &amp;amp;value);&lt;br /&gt;- inline typename QHash::iterator insert(const Key &amp;amp;key, const T &amp;amp;value);&lt;br /&gt;+ // fix for vs2005 SP1&lt;br /&gt;+ // cf. &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=987536&amp;amp;SiteID=1" target="_blank"&gt;http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=987536&amp;amp;SiteID=1&lt;/a&gt;&lt;br /&gt;+ typedef QHash::iterator QHashItr;&lt;br /&gt;+ inline typename QHashItr replace(const Key &amp;amp;key, const T &amp;amp;value);&lt;br /&gt;+ inline typename QHashItr insert(const Key &amp;amp;key, const T &amp;amp;value);&lt;br /&gt;&lt;br /&gt;inline QMultiHash &amp;amp;operator+=(const QMultiHash &amp;amp;other)&lt;br /&gt;{ unite(other); return *this; }&lt;br /&gt;@@ -862,11 +865,11 @@&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;template&lt;br /&gt;-Q_INLINE_TEMPLATE Q_TYPENAME QHash::iterator QMultiHash::replace(const Key &amp;amp;akey, const T &amp;amp;avalue)&lt;br /&gt;+Q_INLINE_TEMPLATE Q_TYPENAME QMultiHash::QHashItr QMultiHash::replace(const Key &amp;amp;akey, const T &amp;amp;avalue)&lt;br /&gt;{ return QHash::insert(akey, avalue); }&lt;br /&gt;&lt;br /&gt;template&lt;br /&gt;-Q_INLINE_TEMPLATE Q_TYPENAME QHash::iterator QMultiHash::insert(const Key &amp;amp;akey, const T &amp;amp;avalue)&lt;br /&gt;+Q_INLINE_TEMPLATE Q_TYPENAME QMultiHash::QHashItr QMultiHash::insert(const Key &amp;amp;akey, const T &amp;amp;avalue)&lt;br /&gt;{ return QHash::insertMulti(akey, avalue); }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;diff -Naur tools_orig/qmap.h tools/qmap.h&lt;br /&gt;--- tools_orig/qmap.h 2006-12-17 03:53:03.437500000 +0900&lt;br /&gt;+++ tools/qmap.h 2006-12-17 05:16:29.984375000 +0900&lt;br /&gt;@@ -890,8 +890,11 @@&lt;br /&gt;QMultiMap() {}&lt;br /&gt;QMultiMap(const QMap &amp;amp;other) : QMap(other) {}&lt;br /&gt;&lt;br /&gt;- inline typename QMap::iterator replace(const Key &amp;amp;key, const T &amp;amp;value);&lt;br /&gt;- inline typename QMap::iterator insert(const Key &amp;amp;key, const T &amp;amp;value);&lt;br /&gt;+ // fix for vs2005 SP1&lt;br /&gt;+ // cf. &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=987536&amp;amp;SiteID=1" target="_blank"&gt;http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=987536&amp;amp;SiteID=1&lt;/a&gt;&lt;br /&gt;+ typedef QMap::iterator QMapItr;&lt;br /&gt;+ inline typename QMapItr replace( const Key &amp;amp;key, const T &amp;amp;value );&lt;br /&gt;+ inline typename QMapItr insert( const Key &amp;amp;key, const T &amp;amp;value );&lt;br /&gt;&lt;br /&gt;inline QMultiMap &amp;amp;operator+=(const QMultiMap &amp;amp;other)&lt;br /&gt;{ unite(other); return *this; }&lt;br /&gt;@@ -904,11 +907,11 @@&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;template&lt;br /&gt;-Q_INLINE_TEMPLATE Q_TYPENAME QMap::iterator QMultiMap::replace(const Key &amp;amp;akey, const T &amp;amp;avalue)&lt;br /&gt;+Q_INLINE_TEMPLATE Q_TYPENAME QMultiMap::QMapItr QMultiMap::replace(const Key &amp;amp;akey, const T &amp;amp;avalue)&lt;br /&gt;{ return QMap::insert(akey, avalue); }&lt;br /&gt;&lt;br /&gt;template&lt;br /&gt;-Q_INLINE_TEMPLATE Q_TYPENAME QMap::iterator QMultiMap::insert(const Key &amp;amp;akey, const T &amp;amp;avalue)&lt;br /&gt;+Q_INLINE_TEMPLATE Q_TYPENAME QMultiMap::QMapItr QMultiMap::insert(const Key &amp;amp;akey, const T &amp;amp;avalue)&lt;br /&gt;{ return QMap::insertMulti(akey, avalue); }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2923218862914453128-3335968294340587324?l=chenhao-nari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.huamang.com/xoops/modules/AMS/article.php?storyid=94' title='QT4 和 VS2005 SP1 编译错误 C2244'/><link rel='replies' type='application/atom+xml' href='http://chenhao-nari.blogspot.com/feeds/3335968294340587324/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2923218862914453128&amp;postID=3335968294340587324' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/3335968294340587324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/3335968294340587324'/><link rel='alternate' type='text/html' href='http://chenhao-nari.blogspot.com/2007/09/qt4-vs2005-sp1-c2244.html' title='QT4 和 VS2005 SP1 编译错误 C2244'/><author><name>陈浩</name><uri>http://www.blogger.com/profile/14506725069676093869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2923218862914453128.post-6829399918139884706</id><published>2007-09-27T12:16:00.000+08:00</published><updated>2007-09-27T12:23:56.967+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS'/><category scheme='http://www.blogger.com/atom/ns#' term='qt'/><title type='text'>解决Visual Studio 2005 SP1编译QT代码的BUG</title><content type='html'>&lt;h4 style="margin-bottom: 0px;" class="TextColor1" id="subjcns!248937d2948589e0!357"&gt;解决Visual Studio 2005 SP1编译QT代码的BUG&lt;/h4&gt;&lt;div dragover="true" id="msgcns!248937d2948589e0!357" class="bvMsg"&gt;&lt;p&gt;产品：QT 4.1.4 &amp;amp; QT 4.2.2&lt;br /&gt;平台：Visual Studio 2005 Service Pack 1 (SP1)&lt;br /&gt;错误：error C2244: unable to match function definition to an existing declaration &lt;/p&gt;&lt;p&gt;现象：&lt;br /&gt;在qmap.h头文件中出现：error C2244: 'QMultiMap&lt;key,t&gt;::insert' : unable to match function definition to an existing declaration&lt;br /&gt;（据说在qhash.h中也会出现） &lt;/p&gt;&lt;p dragover="true"&gt;参考URL：&lt;br /&gt;&lt;a href="http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=214100"&gt;http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=214100&lt;/a&gt; &lt;/p&gt;&lt;p&gt;原因：编译器升级后，分不清嵌套类型的名字是指哪一个，哪怕它们很明显地是同一个类型。例如，如下代码就会引发此错误： &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana, Geneva, Arial, Sans-serif;"&gt;template &lt;class&gt;&lt;br /&gt;class Foo&lt;br /&gt;{&lt;br /&gt;public:&lt;br /&gt;    typedef int NestedType;&lt;br /&gt;};&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana, Geneva, Arial, Sans-serif;"&gt;template &lt;class&gt;&lt;br /&gt;class Bar : public Foo&lt;t&gt;&lt;br /&gt;{&lt;br /&gt;public:&lt;br /&gt;    typename Foo&lt;t&gt;::NestedType test();&lt;br /&gt;};&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana, Geneva, Arial, Sans-serif;"&gt;template &lt;class&gt;&lt;br /&gt;typename Foo&lt;t&gt;::NestedType Bar&lt;t&gt;::test() // this is where the error lies&lt;br /&gt;{&lt;br /&gt;    return 0;&lt;br /&gt;}&lt;/span&gt; &lt;/p&gt;&lt;p&gt;微软的解释：&lt;br /&gt;The problem is due to the use of Foo&lt;t&gt; and Bar&lt;t&gt; on the line above; the compiler cannot figure out the relationship between the two template parameters even though they are clearly the same. The workaround is to add a typedef for the NestedType of Bar and use that in the implementation of test &lt;/p&gt;&lt;p&gt;解决方法：&lt;br /&gt;在子类型中再次定义嵌套类型的名字 &lt;/p&gt;&lt;p&gt;例如，对于QMultiMap，就是这样子 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana, Geneva, Arial, Sans-serif;"&gt;template &lt;class&gt;&lt;br /&gt;class QMultiMap : public QMap&lt;key,&gt;&lt;br /&gt;{&lt;br /&gt;public:&lt;br /&gt;    /////////////////////////////////////////////////////////////////////////&lt;br /&gt;    //Modified by Kenny&lt;br /&gt;    //Purpose: fixed the compiling-time error of Visual Studio 2005 SP1&lt;br /&gt;    //Ref: &lt;/span&gt;&lt;a href="http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=214100"&gt;&lt;span style="font-family:Verdana, Geneva, Arial, Sans-serif;"&gt;http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=214100&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Verdana, Geneva, Arial, Sans-serif;"&gt;    typedef typename QMap&lt;key,&gt;::iterator QMapIteratorType;&lt;br /&gt;    //End of modification&lt;br /&gt;    /////////////////////////////////////////////////////////////////////////&lt;br /&gt;    QMultiMap() {}&lt;br /&gt;    QMultiMap(const QMap&lt;key,&gt; &amp;amp;other) : QMap&lt;key,&gt;(other) {}&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana, Geneva, Arial, Sans-serif;"&gt;    inline QMapIteratorType replace(const Key &amp;amp;key, const T &amp;amp;value);&lt;br /&gt;    inline QMapIteratorType insert(const Key &amp;amp;key, const T &amp;amp;value);&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana, Geneva, Arial, Sans-serif;"&gt;    inline QMultiMap &amp;amp;operator+=(const QMultiMap &amp;amp;other)&lt;br /&gt;    { unite(other); return *this; }&lt;br /&gt;    inline QMultiMap operator+(const QMultiMap &amp;amp;other) const&lt;br /&gt;    { QMultiMap result = *this; result += other; return result; }&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana, Geneva, Arial, Sans-serif;"&gt;private:&lt;br /&gt;    T &amp;amp;operator[](const Key &amp;amp;key);&lt;br /&gt;    const T operator[](const Key &amp;amp;key) const;&lt;br /&gt;};&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana, Geneva, Arial, Sans-serif;"&gt;/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;//Modified by Kenny&lt;br /&gt;//Purpose: fixed the compiling-time error of Visual Studio 2005 SP1&lt;br /&gt;//Ref: &lt;/span&gt;&lt;a href="http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=214100"&gt;&lt;span style="font-family:Verdana, Geneva, Arial, Sans-serif;"&gt;http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=214100&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Verdana, Geneva, Arial, Sans-serif;"&gt;template &lt;class&gt;&lt;br /&gt;Q_INLINE_TEMPLATE Q_TYPENAME QMultiMap&lt;key,&gt;::QMapIteratorType QMultiMap&lt;key,&gt;::replace(const Key &amp;amp;akey, const T &amp;amp;avalue)&lt;br /&gt;{ return QMap&lt;key,&gt;::insert(akey, avalue); }&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana, Geneva, Arial, Sans-serif;"&gt;template &lt;class&gt;&lt;br /&gt;Q_INLINE_TEMPLATE Q_TYPENAME QMultiMap&lt;key,&gt;::QMapIteratorType QMultiMap&lt;key,&gt;::insert(const Key &amp;amp;akey, const T &amp;amp;avalue)&lt;br /&gt;{ return QMap&lt;key,&gt;::insertMulti(akey, avalue); }&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana, Geneva, Arial, Sans-serif;"&gt;//The old code is commented out as the following lines&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana, Geneva, Arial, Sans-serif;"&gt;//template &lt;class&gt;&lt;br /&gt;//Q_INLINE_TEMPLATE Q_TYPENAME QMap&lt;key,&gt;::iterator QMultiMap&lt;key,&gt;::replace(const Key &amp;amp;akey, const T &amp;amp;avalue)&lt;br /&gt;//{ return QMap&lt;key,&gt;::insert(akey, avalue); }&lt;br /&gt;//&lt;br /&gt;//template &lt;class&gt;&lt;br /&gt;//Q_INLINE_TEMPLATE Q_TYPENAME QMap&lt;key,&gt;::iterator QMultiMap&lt;key,&gt;::insert(const Key &amp;amp;akey, const T &amp;amp;avalue)&lt;br /&gt;//{ return QMap&lt;key,&gt;::insertMulti(akey, avalue); }&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana, Geneva, Arial, Sans-serif;"&gt;//End of modification&lt;br /&gt;/////////////////////////////////////////////////////////////////////////////&lt;/span&gt; &lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2923218862914453128-6829399918139884706?l=chenhao-nari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://celerycabbage.spaces.live.com/blog/cns!248937d2948589e0!357.entry' title='解决Visual Studio 2005 SP1编译QT代码的BUG'/><link rel='replies' type='application/atom+xml' href='http://chenhao-nari.blogspot.com/feeds/6829399918139884706/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2923218862914453128&amp;postID=6829399918139884706' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/6829399918139884706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2923218862914453128/posts/default/6829399918139884706'/><link rel='alternate' type='text/html' href='http://chenhao-nari.blogspot.com/2007/09/visual-studio-2005-sp1qtbug.html' title='解决Visual Studio 2005 SP1编译QT代码的BUG'/><author><name>陈浩</name><uri>http://www.blogger.com/profile/14506725069676093869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2923218862914453128.post-6749985684661628698</id><published>2007-09-27T00:56:00.001+08:00</published><updated>2007-09-27T00:56:56.795+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='qt'/><title type='text'>building qt4 with vc2005</title><content type='html'>&lt;div class="table-of-contents"&gt;&lt;p class="table-of-contents-heading"&gt;目录&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://wiki.qgis.org/qgiswiki/Building_QT_4_with_Visual_C++_2005#head-c1b8e0030341ccc9f974b54b64afbca18adecf77"&gt;Introduction&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.qgis.org/qgiswiki/Building_QT_4_with_Visual_C++_2005#head-0c78ed56efcfad10f4d3435d9d5c2bff577c1d11"&gt;Prerequisites&lt;/a&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://wiki.qgis.org/qgiswiki/Building_QT_4_with_Visual_C++_2005#head-3f92c6f1a1c554c4c588e30f608a7ee8bb30eec6"&gt;Notes about my environment configuration&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.qgis.org/qgiswiki/Building_QT_4_with_Visual_C++_2005#head-121fdb4e23b9175059de358e30e907e4e5cc5825"&gt;First: Apply qt-win patch&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.qgis.org/qgiswiki/Building_QT_4_with_Visual_C++_2005#head-bc58f46e2794593e621f097da8223de3140f2c9e"&gt;Second: Compile QT4 using  VC++ 2005&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.qgis.org/qgiswiki/Building_QT_4_with_Visual_C++_2005#head-004f529ff172ad51eea18ca7eaa59db6df2b44e0"&gt;Third: Environment Configurtion&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.qgis.org/qgiswiki/Building_QT_4_with_Visual_C++_2005#head-24eae6fdcc75b3f73e3b49ab59c8487d54b5ba62"&gt;Notes about Visual C++ 2005 Express Edition&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.qgis.org/qgiswiki/Building_QT_4_with_Visual_C++_2005#head-c0f14d3559f10444467a7e4a874ecc417094d3ea"&gt;The End&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.qgis.org/qgiswiki/Building_QT_4_with_Visual_C++_2005#head-987c9196d395b075574977cb016c5c54c2bcdfaf"&gt;Next Step&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.qgis.org/qgiswiki/Building_QT_4_with_Visual_C++_2005#head-1aa51207aa01a94afddd14e4252d97d8059d2fd1"&gt;References&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt; &lt;span class="anchor" id="line-2"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-3"&gt;&lt;/span&gt;&lt;p class="line867"&gt; &lt;/p&gt;&lt;h1 id="head-c1b8e0030341ccc9f974b54b64afbca18adecf77"&gt;Introduction&lt;/h1&gt; &lt;span class="anchor" id="line-4"&gt;&lt;/span&gt;&lt;p class="line862"&gt;In this article I'll try to give step by step explanation of how to build &lt;a class="http" href="http://www.trolltech.com/products/qt/index.html"&gt;QT4 &lt;/a&gt;using latest &lt;a class="http" href="http://msdn.microsoft.com/visualc/"&gt;Microsoft Visual C++ 2005&lt;/a&gt; (8.0) compiler. These instructions are based on article &lt;a class="http" href="http://psi-im.org/wiki/Compiling_Qt4_on_Windows"&gt;Compiling Qt4 on Windows&lt;/a&gt; from &lt;a class="http" href="http://psi-im.org/wiki/"&gt;PsiWiki&lt;/a&gt;. &lt;span class="anchor" id="line-5"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-6"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="line867"&gt; &lt;/p&gt;&lt;h1 id="head-0c78ed56efcfad10f4d3435d9d5c2bff577c1d11"&gt;Prerequisites&lt;/h1&gt; &lt;span class="anchor" id="line-7"&gt;&lt;/span&gt;&lt;ol type="1"&gt;&lt;li&gt;&lt;p class="line862"&gt;You need to have Microsoft Visual C++ 2005 installed. You can use VC++ compiler from &lt;a class="http" href="http://msdn.microsoft.com/vstudio/products/compare/default.aspx"&gt;every edition of Visual Studio&lt;/a&gt;, even from &lt;a class="http" href="http://msdn.microsoft.com/vstudio/express/visualc/default.aspx"&gt;Express Edition&lt;/a&gt; (free). &lt;span class="anchor" id="line-8"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class="line862"&gt;Download &lt;a class="http" href="http://www.trolltech.com/download/opensource.html"&gt;Qt/Windows Open Source Edition&lt;/a&gt;. &lt;span class="anchor" id="line-9"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class="line862"&gt;Download unofficial patch for QT4 from &lt;a class="http" href="http://sourceforge.net/projects/qtwin/%20"&gt;qt-win project&lt;/a&gt;. &lt;span class="anchor" id="line-10"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-11"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p class="line867"&gt;&lt;img alt="/!\" src="http://wiki.qgis.org/wiki//mentalwealth/img/alert.png" title="/!\" height="15" width="15" /&gt; &lt;strong&gt;IMPORTANT&lt;/strong&gt; Select appropriate version of qt-win patch for version of QT you've downloaded. &lt;span class="anchor" id="line-12"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-13"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="line874"&gt;Examples: &lt;span class="anchor" id="line-14"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-15"&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p class="line862"&gt;QT 4.1.0 -&gt; patch for QT 4.1.0 &lt;span class="anchor" id="line-16"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class="line862"&gt;QT 4.1.1 -&gt; patch for QT 4.1.1 &lt;span class="anchor" id="line-17"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;etc. &lt;span class="anchor" id="line-18"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-19"&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class="line862"&gt;Mixing those versions can cause undefined behaviour and compilation likely will fail. I did so, and had to fight with many problems. &lt;a class="http" href="http://www.qtcentre.org/forum/showthread.php?p=6130"&gt;Here&lt;/a&gt; you can find my story about it the &lt;a class="http" href="http://www.qtcentre.org/"&gt;Qt Centre&lt;/a&gt;. &lt;span class="anchor" id="line-20"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-21"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="line867"&gt; &lt;/p&gt;&lt;h2 id="head-3f92c6f1a1c554c4c588e30f608a7ee8bb30eec6"&gt;Notes about my environment configuration&lt;/h2&gt; &lt;span class="anchor" id="line-22"&gt;&lt;/span&gt;&lt;ol type="1"&gt;&lt;li&gt;I unpacked QT 4.1.1 sources into the following directory: &lt;span class="anchor" id="line-23"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-24"&gt;&lt;/span&gt;&lt;pre&gt;D:\lib\qt\4.1.1 &lt;/pre&gt;&lt;span class="anchor" id="line-25"&gt;&lt;/span&gt;So, I set QTDIR environment variable as follows: &lt;span class="anchor" id="line-26"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-27"&gt;&lt;/span&gt;&lt;pre&gt;QTDIR=D:\lib\qt\4.1.1&lt;br /&gt;&lt;span class="anchor" id="line-28"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span class="anchor" id="line-29"&gt;&lt;/span&gt;&lt;p class="line862"&gt;During further explantion I'll use &lt;em&gt;%QTDIR%&lt;/em&gt; refering to the location above. &lt;span class="anchor" id="line-30"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-31"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="gap"&gt;I use Visual C++ 2005 Professional Edition installed in the following location: &lt;span class="anchor" id="line-32"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-33"&gt;&lt;/span&gt;&lt;pre&gt;C:\Program Files\Microsoft Visual Studio 8 &lt;/pre&gt;&lt;span class="anchor" id="line-34"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-35"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="gap"&gt;Visual C++ configuration script can be found here: &lt;span class="anchor" id="line-36"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-37"&gt;&lt;/span&gt;&lt;pre&gt;C:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat &lt;/pre&gt;&lt;span class="anchor" id="line-38"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-39"&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p class="line867"&gt; &lt;/p&gt;&lt;h1 id="head-121fdb4e23b9175059de358e30e907e4e5cc5825"&gt;First: Apply qt-win patch&lt;/h1&gt; &lt;span class="anchor" id="line-40"&gt;&lt;/span&gt;&lt;ol type="1"&gt;&lt;li&gt;&lt;p class="line862"&gt;You should have downloaded qt-win patch. If you have QT 4.1.1 you need this file&lt;a class="http" href="http://prdownloads.sourceforge.net/qtwin/acs4qt411p1.zip?download"&gt;acs4qt411p1.zip&lt;/a&gt; &lt;span class="anchor" id="line-41"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class="line862"&gt;Unpack the patch from ZIP to your &lt;em&gt;%QTDIR%&lt;/em&gt;. &lt;span class="anchor" id="line-42"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class="line862"&gt;Open &lt;strong&gt;Command Line&lt;/strong&gt; window and move to the &lt;em&gt;%QTDIR%&lt;/em&gt;. &lt;span class="anchor" id="line-43"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class="line862"&gt;Run &lt;strong&gt;installpatch41.bat&lt;/strong&gt; script &lt;span class="anchor" id="line-44"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-45"&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;D:\lib\qt\4.1.1&gt;installpatch41.bat&lt;/pre&gt;&lt;span class="anchor" id="line-46"&gt;&lt;/span&gt;You will see many messages like: &lt;span class="anchor" id="line-47"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-48"&gt;&lt;/span&gt;&lt;pre&gt;patching file qconfigure.bat&lt;br /&gt;&lt;span class="anchor" id="line-49"&gt;&lt;/span&gt;patching file examples/threads/waitconditions/waitconditions.pro&lt;br /&gt;&lt;span class="anchor" id="line-50"&gt;&lt;/span&gt;patching file misc/bcc32pch/Makefile.win32-borland&lt;br /&gt;&lt;span class="anchor" id="line-51"&gt;&lt;/span&gt;... &lt;/pre&gt;&lt;span class="anchor" id="line-52"&gt;&lt;/span&gt;Check the output for possible errors. If there are no errors, patch is applied correctly. &lt;span class="anchor" id="line-53"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-54"&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p class="line867"&gt; &lt;/p&gt;&lt;h1 id="head-bc58f46e2794593e621f097da8223de3140f2c9e"&gt;Second: Compile QT4 using  VC++ 2005&lt;/h1&gt; &lt;span class="anchor" id="line-55"&gt;&lt;/span&gt;&lt;p class="line874"&gt;After qt-win patch is applied you can start building QT4 with Visual C++ 2005 compiler. &lt;span class="anchor" id="line-56"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-57"&gt;&lt;/span&gt;&lt;/p&gt;&lt;ol type="1"&gt;&lt;li&gt;&lt;p class="line862"&gt;Run &lt;strong&gt;vsvars32.bat&lt;/strong&gt; script to configure environment for VC++ 2005 compiler &lt;span class="anchor" id="line-58"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-59"&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;D:\lib\qt\4.1.1&gt;"C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat"&lt;br /&gt;&lt;span class="anchor" id="line-60"&gt;&lt;/span&gt;Setting environment for using Microsoft Visual Studio 2005 x86 tools. &lt;/pre&gt;&lt;span class="anchor" id="line-61"&gt;&lt;/span&gt;Note the quotation marks around the path to script. They're required because path includes spaces. &lt;span class="anchor" id="line-62"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-63"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="gap"&gt;&lt;p class="line862"&gt;Run &lt;strong&gt;qconfigure.bat&lt;/strong&gt; script specifying VC++ 2005 compiler Please, write the name of the script correctly. It's &lt;span class="u"&gt;&lt;strong&gt;q&lt;/strong&gt;configure.bat&lt;/span&gt; but not configure.exe which also exists in the &lt;em&gt;%QTDIR%&lt;/em&gt;. &lt;span class="anchor" id="line-64"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-65"&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;D:\lib\qt\4.1.1&gt;qconfigure.bat msvc2005&lt;br /&gt;&lt;span class="anchor" id="line-66"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="anchor" id="line-67"&gt;&lt;/span&gt;This is the Qt/Windows Open Source Edition.&lt;br /&gt;&lt;span class="anchor" id="line-68"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="anchor" id="line-69"&gt;&lt;/span&gt;You are licensed to use this software under the terms of&lt;br /&gt;&lt;span class="anchor" id="line-70"&gt;&lt;/span&gt;the GNU General Public License.&lt;br /&gt;&lt;span class="anchor" id="line-71"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="anchor" id="line-72"&gt;&lt;/span&gt;Type '?' to view the GNU General Public License.&lt;br /&gt;&lt;span class="anchor" id="line-73"&gt;&lt;/span&gt;Type 'y' to accept this license offer.&lt;br /&gt;&lt;span class="anchor" id="line-74"&gt;&lt;/span&gt;Type 'n' to decline this license offer.&lt;br /&gt;&lt;span class="anchor" id="line-75"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="anchor" id="line-76"&gt;&lt;/span&gt;Do you accept the terms of the license? &lt;/pre&gt;&lt;span class="anchor" id="line-77"&gt;&lt;/span&gt;&lt;p class="line862"&gt;Now, accept the license according to instructions above giving &lt;strong&gt;y&lt;/strong&gt; and confirming with enter key. After this step, &lt;strong&gt;nmake&lt;/strong&gt; will run automatically and VC++ 2005 will start building QT4. This process can take a few minutes, depending on speed of your hardware. &lt;span class="anchor" id="line-78"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-79"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="gap"&gt;After compilation is finished without any errors, you should have following binaries ready to use or run: &lt;span class="anchor" id="line-80"&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;QT4 Libraries &lt;span class="anchor" id="line-81"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;p class="line862"&gt;QT4 Tools like &lt;strong&gt;designer&lt;/strong&gt;, &lt;strong&gt;assistance&lt;/strong&gt; and &lt;strong&gt;linguist&lt;/strong&gt; &lt;span class="anchor" id="line-82"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;QT4 Demo applications &lt;span class="anchor" id="line-83"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;QT4 Examples &lt;span class="anchor" id="line-84"&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class="line891"&gt;&lt;a class="http" href="http://wiki.qgis.org/qgiswiki/Building_QT_4_with_Visual_C%2B%2B_2005?action=AttachFile&amp;amp;do=view&amp;amp;target=qt-tools-built-using-vc2005.jpg"&gt;Here is sample screenshot&lt;/a&gt; presenting QT Tools compiled with VC++ 2005 &lt;span class="anchor" id="line-85"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-86"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p class="line867"&gt; &lt;/p&gt;&lt;h1 id="head-004f529ff172ad51eea18ca7eaa59db6df2b44e0"&gt;Third: Environment Configurtion&lt;/h1&gt; &lt;span class="anchor" id="line-87"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-88"&gt;&lt;/span&gt;&lt;ol type="1"&gt;&lt;li&gt;&lt;p class="line862"&gt;Open &lt;em&gt;My Computer -&gt; Properties -&gt; Advanced -&gt; Environment Variables&lt;/em&gt; &lt;span class="anchor" id="line-89"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class="line862"&gt;Add new variable &lt;strong&gt;QTDIR&lt;/strong&gt; as follows &lt;span class="anchor" id="line-90"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-91"&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;QTDIR=D:\lib\qt\4.1.1 &lt;/pre&gt;&lt;span class="anchor" id="line-92"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;p class="line862"&gt;To &lt;strong&gt;PATH&lt;/strong&gt; variable add following path: &lt;span class="anchor" id="line-93"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-94"&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;%QTDIR%\bin &lt;/pre&gt;&lt;span class="anchor" id="line-95"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;p class="line862"&gt;Configure Visual C++ 2005 settings. Open &lt;em&gt;Tools -&gt; Options&lt;/em&gt; dialog box. &lt;span class="anchor" id="line-96"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-97"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="line862"&gt;Add following directories under QTDIR to &lt;strong&gt;Include files&lt;/strong&gt;: &lt;span class="anchor" id="line-98"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-99"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="line891"&gt;&lt;img class="attachment" src="http://wiki.qgis.org/qgiswiki/Building_QT_4_with_Visual_C%2B%2B_2005?action=AttachFile&amp;amp;do=get&amp;amp;target=msvc-include-path-settings.png" title="attachment:msvc-include-path-settings.png" /&gt; &lt;span class="anchor" id="line-100"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-101"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-102"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="line862"&gt;Add QTDIR\lib directory to &lt;strong&gt;Library files&lt;/strong&gt;: &lt;span class="anchor" id="line-103"&gt;&lt;/span&gt;&lt;span class
