﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-CPP&amp;&amp;设计模式小屋-随笔分类-Linux Programming</title><link>http://www.cppblog.com/shenhuafeng/category/2580.html</link><description>(STL,Templete,Generric Programming COM,COM+,ActiveX)---Windows &amp;&amp; Linux &amp;&amp;OpenSource
</description><language>zh-cn</language><lastBuildDate>Wed, 14 Apr 2010 01:10:30 GMT</lastBuildDate><pubDate>Wed, 14 Apr 2010 01:10:30 GMT</pubDate><ttl>60</ttl><item><title>cgicc 相关 下载安装</title><link>http://www.cppblog.com/shenhuafeng/archive/2010/04/13/112467.html</link><dc:creator>CPP&amp;&amp;设计模式小屋</dc:creator><author>CPP&amp;&amp;设计模式小屋</author><pubDate>Tue, 13 Apr 2010 09:07:00 GMT</pubDate><guid>http://www.cppblog.com/shenhuafeng/archive/2010/04/13/112467.html</guid><wfw:comment>http://www.cppblog.com/shenhuafeng/comments/112467.html</wfw:comment><comments>http://www.cppblog.com/shenhuafeng/archive/2010/04/13/112467.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shenhuafeng/comments/commentRss/112467.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shenhuafeng/services/trackbacks/112467.html</trackback:ping><description><![CDATA[<h1 class=title_txt><img height=15 alt=转载 src="http://blog.csdn.net/images/turnship.gif" width=15 border=0>&nbsp; 下载和安装cgicc <cite class=fav_csdnstylebykimi><a class=fav_csdnstylebykimi title=收藏到我的网摘中，并分享给我的朋友 href="javascript:d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(saveit=window.open('http://wz.csdn.net/storeit.aspx?t='+escape(d.title)+'&amp;u='+escape(d.location.href)+'&amp;c='+escape(t),'saveit','scrollbars=no,width=590,height=300,left=75,top=20,status=no,resizable=yes'));saveit.focus();"><u><font color=#0000ff>收藏</font></u></a> </cite></h1>
<div class=blogstory>
<script type=text/javascript>
document.body.oncopy = function() {
if (window.clipboardData) {
setTimeout(function() {
var text = clipboardData.getData("text");
if (text && text.length > 300) {
text = text + "\r\n\n本文来自CSDN博客，转载请标明出处：" + location.href;
clipboardData.setData("text", text);
}
}, 100);
}
}
</script>
<script type=text/javascript>                        function StorePage() { d = document; t = d.selection ? (d.selection.type != 'None' ? d.selection.createRange().text : '') : (d.getSelection ? d.getSelection() : ''); void (keyit = window.open('http://www.365key.com/storeit.aspx?t=' + escape(d.title) + '&u=' + escape(d.location.href) + '&c=' + escape(t), 'keyit', 'scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes')); keyit.focus(); }</script>
&nbsp;
<p><strong>Download:</strong> <a href="ftp://ftp.cgicc.org/"><u><font color=#0000ff>ftp://ftp.cgicc.org/</font></u></a> </p>
<p><strong>Unpack:</strong> <tt>tar xzf cgicc-X.X.X.tar.gz</tt> </p>
<p><strong>Build Libraries:</strong> </p>
<ul>
    <li><tt>cd cgicc-X.X.X/</tt> </li>
    <li><tt>./configure --prefix=/usr</tt> (Default or <tt>/opt</tt>. Make sure you have write priviges to the directory.) <br>If compiling to create a 32 bit library on a 64 bit Athelon: <br><tt>CXXFLAGS="-m32" CFLAGS="-m32" LDFLAGS="-m32"</tt> <br>If installed in <tt>/opt</tt> then you will need to include:
    <ul>
        <li>Include path defined in the compile statement: <tt>-I/opt/include</tt> </li>
        <li>Link command reference: <tt>-L/opt/lib</tt> <br>or use <tt>LD_RUN_PATH</tt> or <tt>/etc/ld.so.conf</tt> </li>
    </ul>
    I prefer to install into <tt>/usr</tt> to eliminate the configuration headaches. </li>
    <li><tt>make install</tt> </li>
</ul>
This will create and install include files, documentation and libraries:
<ul>
    <li>Libraries:
    <pre>/usr/lib/libcgicc.a<br>         libcgicc.la<br>         libcgicc.so              (softlink to libcgicc.so.1.3.0)<br>         libcgicc.so.1            (softlink to libcgicc.so.1.3.0)<br>         libcgicc.so.1.3.0<br></pre>
    </li>
    <li>Include files: <tt>/usr/include/cgicc/...</tt> </li>
    <li>Documentation: <tt>/usr/doc/cgicc-X.X.X/index.html</tt> <br>Also available at <a href="http://www.cgicc.org/doc/"><u><font color=#0000ff>http://www.cgicc.org/doc/</font></u></a> </li>
</ul>
</div>
<img src ="http://www.cppblog.com/shenhuafeng/aggbug/112467.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shenhuafeng/" target="_blank">CPP&&设计模式小屋</a> 2010-04-13 17:07 <a href="http://www.cppblog.com/shenhuafeng/archive/2010/04/13/112467.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>常用的正则表达式(转)</title><link>http://www.cppblog.com/shenhuafeng/archive/2006/12/19/16612.html</link><dc:creator>CPP&amp;&amp;设计模式小屋</dc:creator><author>CPP&amp;&amp;设计模式小屋</author><pubDate>Tue, 19 Dec 2006 06:21:00 GMT</pubDate><guid>http://www.cppblog.com/shenhuafeng/archive/2006/12/19/16612.html</guid><wfw:comment>http://www.cppblog.com/shenhuafeng/comments/16612.html</wfw:comment><comments>http://www.cppblog.com/shenhuafeng/archive/2006/12/19/16612.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shenhuafeng/comments/commentRss/16612.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shenhuafeng/services/trackbacks/16612.html</trackback:ping><description><![CDATA[
		<p>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">^\d+$</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">　　</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">非负整数（正整数 + 0） </span>
				<span style="COLOR: #008000">
						<br />
						<a href="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" target="_blank">
						</a>
				</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">^[0-9]*[1-9][0-9]*$</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">　　</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">正整数 </span>
				<span style="COLOR: #008000">
						<br />
						<a href="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" target="_blank">
						</a>
				</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">^((-\d+)|(0+))$</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">　　</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">非正整数（负整数 + 0） </span>
				<span style="COLOR: #008000">
						<br />
						<a href="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" target="_blank">
						</a>
				</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">^-[0-9]*[1-9][0-9]*$</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">　　</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">负整数 </span>
				<span style="COLOR: #008000">
						<br />
						<a href="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" target="_blank">
						</a>
				</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">^-?\d+$</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">　　　　</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">整数 </span>
				<span style="COLOR: #008000">
						<br />
						<a href="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" target="_blank">
						</a>
				</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">^\d+(\.\d+)?$</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">　　</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">非负浮点数（正浮点数 + 0） </span>
				<span style="COLOR: #008000">
						<br />
						<a href="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" target="_blank">
						</a>
				</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">　　</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">正浮点数 </span>
				<span style="COLOR: #008000">
						<br />
						<a href="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" target="_blank">
						</a>
				</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">^((-\d+(\.\d+)?)|(0+(\.0+)?))$</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">　　</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">非正浮点数（负浮点数 + 0） </span>
				<span style="COLOR: #008000">
						<br />
						<a href="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" target="_blank">
						</a>
				</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">　　</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">负浮点数 </span>
				<span style="COLOR: #008000">
						<br />
						<a href="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" target="_blank">
						</a>
				</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">^(-?\d+)(\.\d+)?$</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">　　</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">浮点数 </span>
				<span style="COLOR: #008000">
						<br />
						<a href="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" target="_blank">
						</a>
				</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">^[A-Za-z]+$</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">　　</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">由26个英文字母组成的字符串 </span>
				<span style="COLOR: #008000">
						<br />
						<a href="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" target="_blank">
						</a>
				</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">^[A-Z]+$</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">　　</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">由26个英文字母的大写组成的字符串 </span>
				<span style="COLOR: #008000">
						<br />
						<a href="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" target="_blank">
						</a>
				</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">^[a-z]+$</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">　　</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">由26个英文字母的小写组成的字符串 </span>
				<span style="COLOR: #008000">
						<br />
						<a href="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" target="_blank">
						</a>
				</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">^[A-Za-z0-9]+$</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">　　</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">由数字和26个英文字母组成的字符串 </span>
				<span style="COLOR: #008000">
						<br />
						<a href="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" target="_blank">
						</a>
				</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">^\w+$</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">　　</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">由数字、26个英文字母或者下划线组成的字符串 </span>
				<span style="COLOR: #008000">
						<br />
						<a href="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" target="_blank">
						</a>
				</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">　　　　</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">email地址 </span>
				<span style="COLOR: #008000">
						<br />
						<a href="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" target="_blank">
						</a>
				</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">　　</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">url</span>
				<span style="COLOR: #008000">
						<br />
						<a href="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" target="_blank">
						</a>
						<a href="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" target="_blank">
						</a>
				</span>
				<span style="COLOR: #000000">/^</span>
				<span style="COLOR: #000000">(d</span>
				<span id="Codehighlighter1_768_770_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<a href="http://www.cnblogs.com/Images/dot.gif" target="_blank">
						</a>
				</span>
				<span id="Codehighlighter1_768_770_Open_Text">
						<span style="COLOR: #000000">{</span>
						<span style="COLOR: #000000">2</span>
						<span style="COLOR: #000000">}</span>
				</span>
				<span style="COLOR: #000000">|</span>
				<span style="COLOR: #000000">d</span>
				<span id="Codehighlighter1_774_776_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<a href="http://www.cnblogs.com/Images/dot.gif" target="_blank">
						</a>
				</span>
				<span id="Codehighlighter1_774_776_Open_Text">
						<span style="COLOR: #000000">{</span>
						<span style="COLOR: #000000">4</span>
						<span style="COLOR: #000000">}</span>
				</span>
				<span style="COLOR: #000000">)</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">((</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">([</span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">9</span>
				<span style="COLOR: #000000">]</span>
				<span id="Codehighlighter1_788_790_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<a href="http://www.cnblogs.com/Images/dot.gif" target="_blank">
						</a>
				</span>
				<span id="Codehighlighter1_788_790_Open_Text">
						<span style="COLOR: #000000">{</span>
						<span style="COLOR: #000000">1</span>
						<span style="COLOR: #000000">}</span>
				</span>
				<span style="COLOR: #000000">))</span>
				<span style="COLOR: #000000">|</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000">[</span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000">|</span>
				<span style="COLOR: #000000">2</span>
				<span style="COLOR: #000000">]))</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">(([</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">2</span>
				<span style="COLOR: #000000">]([</span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">9</span>
				<span style="COLOR: #000000">]</span>
				<span id="Codehighlighter1_817_819_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<a href="http://www.cnblogs.com/Images/dot.gif" target="_blank">
						</a>
				</span>
				<span id="Codehighlighter1_817_819_Open_Text">
						<span style="COLOR: #000000">{</span>
						<span style="COLOR: #000000">1</span>
						<span style="COLOR: #000000">}</span>
				</span>
				<span style="COLOR: #000000">))</span>
				<span style="COLOR: #000000">|</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #000000">3</span>
				<span style="COLOR: #000000">[</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">|</span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000">]))$</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">   </span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">  年-月-日</span>
				<span style="COLOR: #008000">
						<br />
						<a href="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" target="_blank">
						</a>
						<a href="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" target="_blank">
						</a>
				</span>
				<span style="COLOR: #000000">/^</span>
				<span style="COLOR: #000000">((</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">([</span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">9</span>
				<span style="COLOR: #000000">]</span>
				<span id="Codehighlighter1_858_860_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<a href="http://www.cnblogs.com/Images/dot.gif" target="_blank">
						</a>
				</span>
				<span id="Codehighlighter1_858_860_Open_Text">
						<span style="COLOR: #000000">{</span>
						<span style="COLOR: #000000">1</span>
						<span style="COLOR: #000000">}</span>
				</span>
				<span style="COLOR: #000000">))</span>
				<span style="COLOR: #000000">|</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000">[</span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000">|</span>
				<span style="COLOR: #000000">2</span>
				<span style="COLOR: #000000">]))</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">(([</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">2</span>
				<span style="COLOR: #000000">]([</span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">9</span>
				<span style="COLOR: #000000">]</span>
				<span id="Codehighlighter1_888_890_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<a href="http://www.cnblogs.com/Images/dot.gif" target="_blank">
						</a>
				</span>
				<span id="Codehighlighter1_888_890_Open_Text">
						<span style="COLOR: #000000">{</span>
						<span style="COLOR: #000000">1</span>
						<span style="COLOR: #000000">}</span>
				</span>
				<span style="COLOR: #000000">))</span>
				<span style="COLOR: #000000">|</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #000000">3</span>
				<span style="COLOR: #000000">[</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">|</span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000">]))</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">(d</span>
				<span id="Codehighlighter1_908_910_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<a href="http://www.cnblogs.com/Images/dot.gif" target="_blank">
						</a>
				</span>
				<span id="Codehighlighter1_908_910_Open_Text">
						<span style="COLOR: #000000">{</span>
						<span style="COLOR: #000000">2</span>
						<span style="COLOR: #000000">}</span>
				</span>
				<span style="COLOR: #000000">|</span>
				<span style="COLOR: #000000">d</span>
				<span id="Codehighlighter1_914_916_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<a href="http://www.cnblogs.com/Images/dot.gif" target="_blank">
						</a>
				</span>
				<span id="Codehighlighter1_914_916_Open_Text">
						<span style="COLOR: #000000">{</span>
						<span style="COLOR: #000000">4</span>
						<span style="COLOR: #000000">}</span>
				</span>
				<span style="COLOR: #000000">)$</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">   </span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000"> 月/日/年</span>
				<span style="COLOR: #008000">
						<br />
						<a href="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" target="_blank">
						</a>
				</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">   </span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">Emil</span>
				<span style="COLOR: #008000">
						<br />
						<a href="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" target="_blank">
						</a>
				</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">     </span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">电话号码</span>
				<span style="COLOR: #008000">
						<br />
						<a href="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" target="_blank">
						</a>
				</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">   </span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">IP地址</span>
				<br />
		</p>
		<p> </p>
		<p>匹配中文字符的正则表达式： [\u4e00-\u9fa5]<br />匹配双字节字符(包括汉字在内)：[^\x00-\xff]<br />匹配空行的正则表达式：\n[\s| ]*\r<br />匹配HTML标记的正则表达式：/&lt;(.*)&gt;.*&lt;\/\1&gt;|&lt;(.*) \/&gt;/<br />匹配首尾空格的正则表达式：(^\s*)|(\s*$)<br />匹配Email地址的正则表达式：\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*<br />匹配网址URL的正则表达式：^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$<br />匹配帐号是否合法(字母开头，允许5-16字节，允许字母数字下划线)：^[a-zA-Z][a-zA-Z0-9_]{4,15}$<br />匹配国内电话号码：(\d{3}-|\d{4}-)?(\d{8}|\d{7})?<br />匹配腾讯QQ号：^[1-9]*[1-9][0-9]*$<br /></p>
		<p>
				<u>下表是元字符及其在正则表达式上下文中的行为的一个完整列表： <br /></u>
				<br />
				<strong>\</strong> 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。<br /><br /><strong>^</strong> 匹配输入字符串的开始位置。如果设置了 RegExp 对象的Multiline 属性，^ 也匹配 ’\n’ 或 ’\r’ 之后的位置。 <br /><br /><strong>$</strong> 匹配输入字符串的结束位置。如果设置了 RegExp 对象的Multiline 属性，$ 也匹配 ’\n’ 或 ’\r’ 之前的位置。 <br /><br /><strong>*</strong> 匹配前面的子表达式零次或多次。 <br /><br /><strong>+</strong> 匹配前面的子表达式一次或多次。+ 等价于 {1,}。 <br /><br /><strong>?</strong> 匹配前面的子表达式零次或一次。? 等价于 {0,1}。 <br /><br /><strong>{n}</strong> n 是一个非负整数，匹配确定的n 次。<br /><br /><strong>{n,}</strong> n 是一个非负整数，至少匹配n 次。 <br /><br /><strong>{n,m}</strong> m 和 n 均为非负整数，其中n &lt;= m。最少匹配 n 次且最多匹配 m 次。在逗号和两个数之间不能有空格。<br /><br /><strong>?</strong> 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时，匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串，而默认的贪婪模式则尽可能多的匹配所搜索的字符串。 <br /><br /><strong>.</strong> 匹配除 "\n" 之外的任何单个字符。要匹配包括 ’\n’ 在内的任何字符，请使用象 ’[.\n]’ 的模式。 <br /><strong>(pattern)</strong> 匹配pattern 并获取这一匹配。 <br /><br /><strong>(?:pattern)</strong> 匹配pattern 但不获取匹配结果，也就是说这是一个非获取匹配，不进行存储供以后使用。 <br /><br /><strong>(?=pattern)</strong> 正向预查，在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。 <br /><br /><strong>(?!pattern)</strong> 负向预查，与<strong>(?=pattern)</strong>作用相反 <br /><br /><strong>x|y</strong> 匹配 x 或 y。 <br /><br /><strong>[xyz]</strong> 字符集合。 <br /><br /><strong>[^xyz]</strong> 负值字符集合。 <br /><br /><strong>[a-z]</strong> 字符范围，匹配指定范围内的任意字符。 <br /><br /><strong>[^a-z]</strong> 负值字符范围，匹配任何不在指定范围内的任意字符。 <br /><br /><strong>\b</strong> 匹配一个单词边界，也就是指单词和空格间的位置。<br /><br /><strong>\B</strong> 匹配非单词边界。 <br /><br /><strong>\cx</strong> 匹配由x指明的控制字符。 <br /><br /><strong>\d</strong> 匹配一个数字字符。等价于 [0-9]。 <br /><br /><strong>\D</strong> 匹配一个非数字字符。等价于 [^0-9]。 <br /><br /><strong>\f</strong> 匹配一个换页符。等价于 \x0c 和 \cL。 <br /><br /><strong>\n</strong> 匹配一个换行符。等价于 \x0a 和 \cJ。 <br /><br /><strong>\r</strong> 匹配一个回车符。等价于 \x0d 和 \cM。 <br /><br /><strong>\s</strong> 匹配任何空白字符，包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。 <br /><br /><strong>\S</strong> 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。 <br /><br /><strong>\t</strong> 匹配一个制表符。等价于 \x09 和 \cI。 <br /><br /><strong>\v</strong> 匹配一个垂直制表符。等价于 \x0b 和 \cK。 <br /><br /><strong>\w</strong> 匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。 <br /><br /><strong>\W</strong> 匹配任何非单词字符。等价于 ’[^A-Za-z0-9_]’。 <br /><br /><strong>\xn</strong> 匹配 n，其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。<br /><br /><strong>\num</strong> 匹配 num，其中num是一个正整数。对所获取的匹配的引用。 <br /><br /><strong>\n</strong> 标识一个八进制转义值或一个后向引用。如果 \n 之前至少 n 个获取的子表达式，则 n 为后向引用。否则，如果 n 为八进制数字 (0-7)，则 n 为一个八进制转义值。 <br /><br /><strong>\nm</strong> 标识一个八进制转义值或一个后向引用。如果 \nm 之前至少有is preceded by at least nm 个获取得子表达式，则 nm 为后向引用。如果 \nm 之前至少有 n 个获取，则 n 为一个后跟文字 m 的后向引用。如果前面的条件都不满足，若 n 和 m 均为八进制数字 (0-7)，则 \nm 将匹配八进制转义值 nm。 <br /><br /><strong>\nml</strong> 如果 n 为八进制数字 (0-3)，且 m 和 l 均为八进制数字 (0-7)，则匹配八进制转义值 nml。 <br /><br /><strong>\un</strong> 匹配 n，其中 n 是一个用四个十六进制数字表示的Unicode字符。 <br /></p>
		<p>匹配中文字符的正则表达式： [u4e00-u9fa5]</p>
		<p>匹配双字节字符(包括汉字在内)：[^x00-xff]</p>
		<p>应用：计算字符串的长度（一个双字节字符长度计2，ASCII字符计1）</p>
		<p>String.prototype.len=function(){return this.replace([^x00-xff]/g,"aa").length;}</p>
		<p>匹配空行的正则表达式：n[s| ]*r</p>
		<p>匹配HTML标记的正则表达式：/&lt;(.*)&gt;.*&lt;/1&gt;|&lt;(.*) /&gt;/ </p>
		<p>匹配首尾空格的正则表达式：(^s*)|(s*$)</p>
		<p>应用：javascript中没有像vbscript那样的trim函数，我们就可以利用这个表达式来实现，如下：</p>
		<p>String.prototype.trim = function()<br />{<br />return this.replace(/(^s*)|(s*$)/g, "");<br />}</p>
		<p>利用正则表达式分解和转换IP地址：</p>
		<p>下面是利用正则表达式匹配IP地址，并将IP地址转换成对应数值的Javascript程序：</p>
		<p>function IP2V(ip)<br />{<br />re=/(d+).(d+).(d+).(d+)/g //匹配IP地址的正则表达式<br />if(re.test(ip))<br />{<br />return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1<br />}<br />else<br />{<br />throw new Error("Not a valid IP address!")<br />}<br />}</p>
		<p>不过上面的程序如果不用正则表达式，而直接用split函数来分解可能更简单，程序如下：</p>
		<p>var ip="10.100.20.168"<br />ip=ip.split(".")<br />alert("IP值是："+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))</p>
		<p>匹配Email地址的正则表达式：w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*</p>
		<p>匹配网址URL的正则表达式：http://([w-]+.)+[w-]+(/[w- ./?%&amp;=]*)?</p>
		<p>利用正则表达式去除字串中重复的字符的算法程序：</p>
		<p>var s="abacabefgeeii"<br />var s1=s.replace(/(.).*1/g,"$1")<br />var re=new RegExp("["+s1+"]","g")<br />var s2=s.replace(re,"") <br />alert(s1+s2) //结果为：abcefgi</p>
		<p>我原来在CSDN上发贴寻求一个表达式来实现去除重复字符的方法，最终没有找到，这是我能想到的最简单的实现方法。思路是使用后向引用取出包括重复的字符，再以重复的字符建立第二个表达式，取到不重复的字符，两者串连。这个方法对于字符顺序有要求的字符串可能不适用。</p>
		<p>得用正则表达式从URL地址中提取文件名的javascript程序，如下结果为page1</p>
		<p>s="http://www.9499.net/page1.htm"<br />s=s.replace(/(.*/){0,}([^.]+).*/ig,"$2")<br />alert(s)</p>
		<p>利用正则表达式限制网页表单里的文本框输入内容：</p>
		<p>用正则表达式限制只能输入中文：onkeyup="value=value.replace(/[^u4E00-u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^u4E00-u9FA5]/g,''))"</p>
		<p>用正则表达式限制只能输入全角字符： onkeyup="value=value.replace(/[^uFF00-uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^uFF00-uFFFF]/g,''))"</p>
		<p>用正则表达式限制只能输入数字：onkeyup="value=value.replace(/[^d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))"</p>
		<p>用正则表达式限制只能输入数字和英文：onkeyup="value=value.replace(/[W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))"</p>
<img src ="http://www.cppblog.com/shenhuafeng/aggbug/16612.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shenhuafeng/" target="_blank">CPP&&设计模式小屋</a> 2006-12-19 14:21 <a href="http://www.cppblog.com/shenhuafeng/archive/2006/12/19/16612.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ 的各种库--转(收藏)</title><link>http://www.cppblog.com/shenhuafeng/archive/2006/11/27/15690.html</link><dc:creator>CPP&amp;&amp;设计模式小屋</dc:creator><author>CPP&amp;&amp;设计模式小屋</author><pubDate>Mon, 27 Nov 2006 06:14:00 GMT</pubDate><guid>http://www.cppblog.com/shenhuafeng/archive/2006/11/27/15690.html</guid><wfw:comment>http://www.cppblog.com/shenhuafeng/comments/15690.html</wfw:comment><comments>http://www.cppblog.com/shenhuafeng/archive/2006/11/27/15690.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shenhuafeng/comments/commentRss/15690.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shenhuafeng/services/trackbacks/15690.html</trackback:ping><description><![CDATA[
		<p>在C++中，库的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过</p>
		<p>设计更多的语法的言论。现实中，C++的库门类繁多，解决的问题也是极其广泛，库从轻量级到重量级</p>
		<p>的都有。不少都是让人眼界大开，亦或是望而生叹的思维杰作。由于库的数量非常庞大，而且限于笔者</p>
		<p>水平，其中很多并不了解。所以文中所提的一些库都是比较著名的大型库。</p>
		<p>标准库</p>
		<p>标准库中提供了C++程序的基本设施。虽然C++标准库随着C++标准折腾了许多年，直到标准的出台才正</p>
		<p>式定型，但是在标准库的实现上却很令人欣慰得看到多种实现，并且已被实践证明为有工业级别强度的</p>
		<p>佳作。</p>
		<p>1、   Dinkumware C++ Library</p>
		<p>参考站点：<a href="http://www.dinkumware.com/'&gt;http://www.dinkumware.com/">http://www.dinkumware.com/'&gt;http://www.dinkumware.com/</a></p>
		<p>P.J. Plauger编写的高品质的标准库。P.J. Plauger博士是Dr. Dobb's程序设计杰出奖的获得者。其编</p>
		<p>写的库长期被Microsoft采用，并且最近Borland也取得了其OEM的license，在其C/C++的产品中采用</p>
		<p>Dinkumware的库。</p>
		<p>2、   RogueWave Standard C++ Library</p>
		<p>参考站点：</p>
		<p>
				<a href="http://www.roguewave.com/'&gt;http://www.roguewave.com/'&gt;http://www.roguewave.com/'&gt;http://ww">http://www.roguewave.com/'&gt;http://www.roguewave.com/'&gt;http://www.roguewave.com/'&gt;http://ww</a>
		</p>
		<p>w.roguewave.com/</p>
		<p>这个库在Borland C++ Builder的早期版本中曾经被采用，后来被其他的库给替换了。笔者不推荐使用</p>
		<p>。</p>
		<p>3、SGI STL</p>
		<p>参考站点：</p>
		<p>
				<a href="http://www.roguewave.com/'&gt;http://www.roguewave.com/'&gt;http://www.roguewave.com/'&gt;http://ww">http://www.roguewave.com/'&gt;http://www.roguewave.com/'&gt;http://www.roguewave.com/'&gt;http://ww</a>
		</p>
		<p>w.roguewave.com/</p>
		<p>SGI公司的C++标准模版库。</p>
		<p>4、STLport</p>
		<p>参考站点：<a href="http://www.stlport.org/'&gt;http://www.stlport.org/">http://www.stlport.org/'&gt;http://www.stlport.org/</a></p>
		<p>SGI STL库的跨平台可移植版本。</p>
		<p> </p>
		<p>准标准库——Boost</p>
		<p>Boost库是一个经过千锤百炼、可移植、提供源代码的C++库，作为标准库的后备，是C++标准化进程的</p>
		<p>发动机之一。 Boost库由C++标准委员会库工作组成员发起，在C++社区中影响甚大，其成员已近2000人</p>
		<p>。 Boost库为我们带来了最新、最酷、最实用的技术，是不折不扣的“准”标准库。</p>
		<p>Boost中比较有名气的有这么几个库：</p>
		<p>Regex<br />正则表达式库</p>
		<p>Spirit<br />LL parser framework，用C++代码直接表达EBNF</p>
		<p>Graph<br />图组件和算法</p>
		<p>Lambda<br />在调用的地方定义短小匿名的函数对象，很实用的functional功能</p>
		<p>concept check<br />检查泛型编程中的concept</p>
		<p>Mpl<br />用模板实现的元编程框架</p>
		<p>Thread<br />可移植的C++多线程库</p>
		<p>Python<br />把C++类和函数映射到Python之中</p>
		<p>Pool<br />内存池管理</p>
		<p>smart_ptr<br />5个智能指针，学习智能指针必读，一份不错的参考是来自CUJ的文章：</p>
		<p>Smart Pointers in Boost,哦，这篇文章可以查到，CUJ是提供在线浏览的。中文版见笔者在《Dr. </p>
		<p>Dobb's Journal软件研发杂志》第7辑上的译文。</p>
		<p>
				<br />Boost总体来说是实用价值很高，质量很高的库。并且由于其对跨平台的强调，对标准C++的强调，是编</p>
		<p>写平台无关，现代C++的开发者必备的工具。但是Boost中也有很多是实验性质的东西，在实际的开发中</p>
		<p>实用需要谨慎。并且很多Boost中的库功能堪称对语言功能的扩展，其构造用尽精巧的手法，不要贸然</p>
		<p>的花费时间研读。Boost另外一面，比如Graph这样的库则是具有工业强度，结构良好，非常值得研读的</p>
		<p>精品代码，并且也可以放心的在产品代码中多多利用。</p>
		<p>参考站点：<a href="http://www.boost.org'&gt;http://www.boost.org">http://www.boost.org'&gt;http://www.boost.org</a>（国内镜像：</p>
		<p>
				<a href="http://www.c'&gt;http://www.c'&gt;http://www.c'&gt;http://www.c-view.org/tech/lib/boost/index.htm">http://www.c'&gt;http://www.c'&gt;http://www.c'&gt;http://www.c-view.org/tech/lib/boost/index.htm</a>）</p>
		<p>GUI</p>
		<p>在众多C++的库中，GUI部分的库算是比较繁荣，也比较引人注目的。在实际开发中，GUI库的选择也是</p>
		<p>非常重要的一件事情，下面我们综述一下可选择的GUI库，各自的特点以及相关工具的支持。</p>
		<p>1、   MFC</p>
		<p>大名鼎鼎的微软基础类库（Microsoft Foundation Class）。大凡学过VC++的人都应该知道这个库。虽</p>
		<p>然从技术角度讲，MFC是不大漂亮的，但是它构建于Windows API 之上，能够使程序员的工作更容易,编</p>
		<p>程效率高，减少了大量在建立 Windows 程序时必须编写的代码，同时它还提供了所有一般 C++ 编程的</p>
		<p>优点，例如继承和封装。MFC 编写的程序在各个版本的Windows操作系统上是可移植的，例如，在 </p>
		<p>Windows 3.1下编写的代码可以很容易地移植到 Windows NT 或 Windows 95 上。但是在最近发展以及</p>
		<p>官方支持上日渐势微。</p>
		<p> </p>
		<p>2、   QT</p>
		<p>参考网站：<a href="http://www.trolltech.com/'&gt;http://www.trolltech.com/">http://www.trolltech.com/'&gt;http://www.trolltech.com/</a></p>
		<p>Qt是Trolltech公司的一个多平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术</p>
		<p>级的图形用户界面所需的所用功能。Qt是完全面向对象的很容易扩展，并且允许真正地组件编程。自从</p>
		<p>1996年早些时候，Qt进入商业领域，它已经成为全世界范围内数千种成功的应用程序的基础。Qt也是流</p>
		<p>行的Linux桌面环境KDE 的基础，同时它还支持Windows、Macintosh、Unix/X11等多种平台。</p>
		<p> </p>
		<p>3、WxWindows</p>
		<p>参考网站：<a href="http://www.wxwindows.org/'&gt;http://www.wxwindows.org/">http://www.wxwindows.org/'&gt;http://www.wxwindows.org/</a></p>
		<p>跨平台的GUI库。因为其类层次极像MFC，所以有文章介绍从MFC到WxWindows的代码移植以实现跨平台的</p>
		<p>功能。通过多年的开发也是一个日趋完善的GUI库，支持同样不弱于前面两个库。并且是完全开放源代</p>
		<p>码的。新近的C++ Builder X的GUI设计器就是基于这个库的。</p>
		<p>4、Fox</p>
		<p>开放源代码的GUI库。作者从自己亲身的开发经验中得出了一个理想的GUI库应该是什么样子的感受出发</p>
		<p>，从而开始了对这个库的开发。有兴趣的可以尝试一下。</p>
		<p>参考网站：<a href="http://www.fox'&gt;http://www.fox-toolkit.org/">http://www.fox'&gt;http://www.fox-toolkit.org/</a></p>
		<p>5、   WTL</p>
		<p>基于ATL的一个库。因为使用了大量ATL的轻量级手法，模板等技术，在代码尺寸，以及速度优化方面做</p>
		<p>得非常到位。主要面向的使用群体是开发COM轻量级供网络下载的可视化控件的开发者。</p>
		<p>6、   GTK</p>
		<p>参考网站：<a href="http://gtkmm.sourceforge.net/">http://gtkmm.sourceforge.net/</a></p>
		<p>GTK是一个大名鼎鼎的C的开源GUI库。在Linux世界中有Gnome这样的杀手应用。而GTK就是这个库的C++</p>
		<p>封装版本。</p>
		<p>
				<br />网络通信</p>
		<p>ACE</p>
		<p>参考网站：</p>
		<p>
				<a href="http://www.c'&gt;http://www.c'&gt;http://www.c'&gt;http://www.cs.wustl.edu/~schmidt/ACE.html">http://www.c'&gt;http://www.c'&gt;http://www.c'&gt;http://www.cs.wustl.edu/~schmidt/ACE.html</a>
		</p>
		<p>C++库的代表，超重量级的网络通信开发框架。ACE自适配通信环境（Adaptive Communication </p>
		<p>Environment）是可以自由使用、开放源代码的面向对象框架，在其中实现了许多用于并发通信软件的</p>
		<p>核心模式。ACE提供了一组丰富的可复用C++包装外观（Wrapper Facade）和框架组件，可跨越多种平台</p>
		<p>完成通用的通信软件任务，其中包括：事件多路分离和事件处理器分派、信号处理、服务初始化、进程</p>
		<p>间通信、共享内存管理、消息路由、分布式服务动态（重）配置、并发执行和同步，等等。</p>
		<p>StreamModule</p>
		<p>参考网站：<a href="http://www.omnifarious.org/StrMod/'&gt;http://www.omnifarious.org/StrMod/">http://www.omnifarious.org/StrMod/'&gt;http://www.omnifarious.org/StrMod/</a></p>
		<p>设计用于简化编写分布式程序的库。尝试着使得编写处理异步行为的程序更容易，而不是用同步的外壳</p>
		<p>包起异步的本质。</p>
		<p>SimpleSocket</p>
		<p>参考网站：<a href="http://home.hetnet.nl/~lcbokkers/simsock.htm">http://home.hetnet.nl/~lcbokkers/simsock.htm</a></p>
		<p>这个类库让编写基于socket的客户/服务器程序更加容易。</p>
		<p>A Stream Socket API for C++</p>
		<p>参考网站：</p>
		<p>
				<a href="http://www.pcs.cnu.edu/'&gt;http://www.pcs.cnu.edu/~dgame/sockets/socketsC++/sockets.html">http://www.pcs.cnu.edu/'&gt;http://www.pcs.cnu.edu/~dgame/sockets/socketsC++/sockets.html</a>
		</p>
		<p>又一个对Socket的封装库。</p>
		<p>XML</p>
		<p>Xerces</p>
		<p>参考网站：<a href="http://xml.apache.org/xerces-c/">http://xml.apache.org/xerces-c/</a></p>
		<p>Xerces-C++ 是一个非常健壮的XML解析器，它提供了验证，以及SAX和DOM API。XML验证在文档类型定</p>
		<p>义(Document Type Definition，DTD)方面有很好的支持，并且在2001年12月增加了支持W3C XML </p>
		<p>Schema 的基本完整的开放标准。</p>
		<p>XMLBooster</p>
		<p>参考网站：<a href="http://www.xmlbooster.com/'&gt;http://www.xmlbooster.com/">http://www.xmlbooster.com/'&gt;http://www.xmlbooster.com/</a></p>
		<p>这个库通过产生特制的parser的办法极大的提高了XML解析的速度，并且能够产生相应的GUI程序来修改</p>
		<p>这个parser。在DOM和SAX两大主流XML解析办法之外提供了另外一个可行的解决方案。</p>
		<p>Pull Parser</p>
		<p>         参考网站：</p>
		<p>
				<a href="http://www.extreme.indiana.edu/xgws/xsoap/xpp/'&gt;http://www.extreme.indiana.edu/xgws/xsoap/">http://www.extreme.indiana.edu/xgws/xsoap/xpp/'&gt;http://www.extreme.indiana.edu/xgws/xsoap/</a>
		</p>
		<p>xpp/</p>
		<p>         这个库采用pull方法的parser。在每个SAX的parser底层都有一个pull的parser，这个xpp把</p>
		<p>这层暴露出来直接给大家使用。在要充分考虑速度的时候值得尝试。</p>
		<p>Xalan</p>
		<p>         参考网站：<a href="http://xml.apache.org/xalan-c/">http://xml.apache.org/xalan-c/</a></p>
		<p>         Xalan是一个用于把XML文档转换为HTML，纯文本或者其他XML类型文档的XSLT处理器。</p>
		<p>CMarkup</p>
		<p>         参考网站：<a href="http://www.firstobject.com/xml.htm'&gt;http://www.firstobject.com/xml.htm">http://www.firstobject.com/xml.htm'&gt;http://www.firstobject.com/xml.htm</a></p>
		<p>         这是一种使用EDOM的XML解析器。在很多思路上面非常灵活实用。值得大家在DOM和SAX之外寻</p>
		<p>求一点灵感。</p>
		<p>libxml++</p>
		<p>
				<a href="http://libxmlplusplus.sourceforge.net/">http://libxmlplusplus.sourceforge.net/</a>
		</p>
		<p>libxml++是对著名的libxml XML解析器的C++封装版本</p>
		<p> </p>
		<p>科学计算</p>
		<p>Blitz++</p>
		<p>参考网站：<a href="http://www.oonumerics.org/blitz/'&gt;http://www.oonumerics.org/blitz/">http://www.oonumerics.org/blitz/'&gt;http://www.oonumerics.org/blitz/</a></p>
		<p>Blitz++ 是一个高效率的数值计算函数库，它的设计目的是希望建立一套既具像C++ 一样方便，同时又</p>
		<p>比Fortran速度更快的数值计算环境。通常，用C++所写出的数值程序，比 Fortran慢20%左右，因此</p>
		<p>Blitz++正是要改掉这个缺点。方法是利用C++的template技术，程序执行甚至可以比Fortran更快。</p>
		<p>Blitz++目前仍在发展中，对于常见的SVD，FFTs，QMRES等常见的线性代数方法并不提供，不过使用者</p>
		<p>可以很容易地利用Blitz++所提供的函数来构建。</p>
		<p>POOMA</p>
		<p>参考网站：</p>
		<p>
				<a href="http://www.c'&gt;http://www.c'&gt;http://www.c'&gt;http://www.codesourcery.com/pooma/pooma">http://www.c'&gt;http://www.c'&gt;http://www.c'&gt;http://www.codesourcery.com/pooma/pooma</a>
		</p>
		<p>POOMA是一个免费的高性能的C++库，用于处理并行式科学计算。POOMA的面向对象设计方便了快速的程</p>
		<p>序开发，对并行机器进行了优化以达到最高的效率，方便在工业和研究环境中使用。</p>
		<p>MTL</p>
		<p>参考网站：<a href="http://www.osl.iu.edu/research/mtl/'&gt;http://www.osl.iu.edu/research/mtl/">http://www.osl.iu.edu/research/mtl/'&gt;http://www.osl.iu.edu/research/mtl/</a></p>
		<p>Matrix Template Library(MTL)是一个高性能的泛型组件库，提供了各种格式矩阵的大量线性代数方面</p>
		<p>的功能。在某些应用使用高性能编译器的情况下，比如Intel的编译器，从产生的汇编代码可以看出其</p>
		<p>与手写几乎没有两样的效能。</p>
		<p>CGAL</p>
		<p>参考网站：<a href="http://www.cgal.org/">www.cgal.org</a></p>
		<p>Computational Geometry Algorithms Library的目的是把在计算几何方面的大部分重要的解决方案和</p>
		<p>方法以C++库的形式提供给工业和学术界的用户。</p>
		<p> </p>
		<p>游戏开发</p>
		<p>Audio/Video 3D C++ Programming Library</p>
		<p>参考网站：</p>
		<p>
				<a href="http://www.galacticasoftware.com/products/av/'&gt;http://www.galacticasoftware.com/products/a">http://www.galacticasoftware.com/products/av/'&gt;http://www.galacticasoftware.com/products/a</a>
		</p>
		<p>v/</p>
		<p>AV3D是一个跨平台，高性能的C++库。主要的特性是提供3D图形，声效支持（SB,以及S3M），控制接口</p>
		<p>（键盘，鼠标和遥感），XMS。</p>
		<p>KlayGE</p>
		<p>参考网站：<a href="http://home.g365.net/enginedev/">http://home.g365.net/enginedev/</a></p>
		<p>国内游戏开发高手自己用C++开发的游戏引擎。KlayGE是一个开放源代码、跨平台的游戏引擎，并使用</p>
		<p>Python作脚本语言。KlayGE在LGPL协议下发行。感谢龚敏敏先生为中国游戏开发事业所做出的贡献。</p>
		<p>OGRE</p>
		<p>参考网站：<a href="http://www.ogre3d.org'&gt;http://www.ogre3d.org">http://www.ogre3d.org'&gt;http://www.ogre3d.org</a></p>
		<p>OGRE（面向对象的图形渲染引擎）是用C++开发的，使用灵活的面向对象3D引擎。它的目的是让开发者</p>
		<p>能更方便和直接地开发基于3D硬件设备的应用程序或游戏。引擎中的类库对更底层的系统库（如：</p>
		<p>Direct3D和OpenGL）的全部使用细节进行了抽象，并提供了基于现实世界对象的接口和其它类。</p>
		<p> </p>
		<p>线程</p>
		<p>C++ Threads</p>
		<p>参考网站：<a href="http://threads.sourceforge.net/">http://threads.sourceforge.net/</a></p>
		<p>这个库的目标是给程序员提供易于使用的类，这些类被继承以提供在Linux环境中很难看到的大量的线</p>
		<p>程方面的功能。</p>
		<p>ZThreads</p>
		<p>参考网站：<a href="http://zthread.sourceforge.net/">http://zthread.sourceforge.net/</a></p>
		<p>一个先进的面向对象，跨平台的C++线程和同步库。</p>
		<p> </p>
		<p>序列化</p>
		<p>s11n</p>
		<p>参考网站：<a href="http://s11n.net/">http://s11n.net/</a></p>
		<p>一个基于STL的C++库，用于序列化POD，STL容器以及用户定义的类型。</p>
		<p>Simple XML Persistence Library</p>
		<p>参考网站：<a href="http://sxp.sourceforge.net/">http://sxp.sourceforge.net/</a></p>
		<p>这是一个把对象序列化为XML的轻量级的C++库。</p>
		<p> </p>
		<p>字符串</p>
		<p>C++ Str Library</p>
		<p>参考网站：<a href="http://www.utilitycode.com/str/'&gt;http://www.utilitycode.com/str/">http://www.utilitycode.com/str/'&gt;http://www.utilitycode.com/str/</a></p>
		<p>操作字符串和字符的库，支持Windows和支持gcc的多种平台。提供高度优化的代码，并且支持多线程环</p>
		<p>境和Unicode，同时还有正则表达式的支持。</p>
		<p>Common Text Transformation Library</p>
		<p>参考网站：<a href="http://cttl.sourceforge.net/">http://cttl.sourceforge.net/</a></p>
		<p>这是一个解析和修改STL字符串的库。CTTL substring类可以用来比较，插入，替换以及用EBNF的语法</p>
		<p>进行解析。</p>
		<p>GRETA</p>
		<p>参考网站：<a href="http://research.microsoft.com/projects/greta/">http://research.microsoft.com/projects/greta/</a></p>
		<p>这是由微软研究院的研究人员开发的处理正则表达式的库。在小型匹配的情况下有非常优秀的表现。</p>
		<p>综合</p>
		<p>P::Classes</p>
		<p>参考网站：<a href="http://pclasses.com/">http://pclasses.com/</a></p>
		<p>一个高度可移植的C++应用程序框架。当前关注类型和线程安全的signal/slot机制，i/o系统包括基于</p>
		<p>插件的网络协议透明的i/o架构，基于插件的应用程序消息日志框架，访问sql数据库的类等等。</p>
		<p>ACDK - Artefaktur Component Development Kit</p>
<img src ="http://www.cppblog.com/shenhuafeng/aggbug/15690.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shenhuafeng/" target="_blank">CPP&&设计模式小屋</a> 2006-11-27 14:14 <a href="http://www.cppblog.com/shenhuafeng/archive/2006/11/27/15690.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>