??xml version="1.0" encoding="utf-8" standalone="yes"?> Download: ftp://ftp.cgicc.org/ Unpack: tar xzf cgicc-X.X.X.tar.gz Build Libraries: 下蝲和安装cgicc 收藏
This will create and install include files, documentation and libraries:
If compiling to create a 32 bit library on a 64 bit Athelon:
CXXFLAGS="-m32" CFLAGS="-m32" LDFLAGS="-m32"
If installed in /opt then you will need to include:
I prefer to install into /usr to eliminate the configuration headaches.
or use LD_RUN_PATH or /etc/ld.so.conf
/usr/lib/libcgicc.a
libcgicc.la
libcgicc.so (softlink to libcgicc.so.1.3.0)
libcgicc.so.1 (softlink to libcgicc.so.1.3.0)
libcgicc.so.1.3.0
Also available at http://www.cgicc.org/doc/
"
^[0-9]*[1-9][0-9]*$
"
//
正整敊W?/span>
"
^((-\d+)|(0+))$
"
//
非正整数Q负整数 + 0Q?/span>
"
^-[0-9]*[1-9][0-9]*$
"
//
负整敊W?/span>
"
^-?\d+$
"
//
整数
"
^\d+(\.\d+)?$
"
//
非负点敎ͼ正QҎ + 0Q?/span>
"
^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
"
//
正QҎ
"
^((-\d+(\.\d+)?)|(0+(\.0+)?))$
"
//
非正点敎ͼ负QҎ + 0Q?/span>
"
^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
"
//
负QҎ
"
^(-?\d+)(\.\d+)?$
"
//
点敊W?/span>
"
^[A-Za-z]+$
"
//
?6个英文字母组成的字符串?/span>
"
^[A-Z]+$
"
//
?6个英文字母的大写l成的字W串
"
^[a-z]+$
"
//
?6个英文字母的写l成的字W串
"
^[A-Za-z0-9]+$
"
//
由数字和26个英文字母组成的字符串?/span>
"
^\w+$
"
//
由数字?6个英文字母或者下划线l成的字W串
"
^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$
"
//
email地址
"
^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$
"
//
url
/^
(d
{
2
}
|
d
{
4
}
)
-
((
0
([
1
-
9
]
{
1
}
))
|
(
1
[
1
|
2
]))
-
(([
0
-
2
]([
1
-
9
]
{
1
}
))
|
(
3
[
0
|
1
]))$
/
//
q???/span>
/^
((
0
([
1
-
9
]
{
1
}
))
|
(
1
[
1
|
2
]))
/
(([
0
-
2
]([
1
-
9
]
{
1
}
))
|
(
3
[
0
|
1
]))
/
(d
{
2
}
|
d
{
4
}
)$
/
//
??q?/span>
"
^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$
"
//
Emil
"
(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?
"
//
电话L
"
^(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])$
"
//
IP地址
匚w中文字符的正则表辑ּQ?[\u4e00-\u9fa5]
匚w双字节字W?包括汉字在内)Q[^\x00-\xff]
匚wI的正则表辑ּQ\n[\s| ]*\r
匚wHTML标记的正则表辑ּQ?<(.*)>.*<\/\1>|<(.*) \/>/
匚w首尾I格的正则表辑ּQ?^\s*)|(\s*$)
匚wEmail地址的正则表辑ּQ\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匚w|址URL的正则表辑ּQ^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$
匚w帐号是否合法(字母开_允许5-16字节Q允许字母数字下划线)Q^[a-zA-Z][a-zA-Z0-9_]{4,15}$
匚w国内电话LQ?\d{3}-|\d{4}-)?(\d{8}|\d{7})?
匚w腾讯QQP^[1-9]*[1-9][0-9]*$
下表是元字符及其在正则表辑ּ上下文中的行为的一个完整列表:
\ 下一个字W标Cؓ一个特D字W、或一个原义字W、或一个后向引用、或一个八q制转义W?br />
^ 匚w输入字符串的开始位|。如果设|了 RegExp 对象的Multiline 属性,^ 也匹?’\n??’\r?之后的位|?
$ 匚w输入字符串的l束位置。如果设|了 RegExp 对象的Multiline 属性,$ 也匹?’\n??’\r?之前的位|?
* 匚w前面的子表达式零ơ或多次?
+ 匚w前面的子表达式一ơ或多次? {h?{1,}?
? 匚w前面的子表达式零ơ或一ơ? {h?{0,1}?
{n} n 是一个非负整敎ͼ匚w定的n ơ?br />
{n,} n 是一个非负整敎ͼ臛_匚wn ơ?
{n,m} m ?n 均ؓ非负整数Q其中n <= m。最匹?n ơ且最多匹?m ơ。在逗号和两个数之间不能有空根{?br />
? 当该字符紧跟在Q何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面Ӟ匚w模式是非贪婪的。非贪婪模式可能少的匹配所搜烦的字W串Q而默认的贪婪模式则尽可能多的匚w所搜烦的字W串?
. 匚w?"\n" 之外的Q何单个字W。要匚w包括 ’\n?在内的Q何字W,请用象 ’[.\n]?的模式?
(pattern) 匚wpattern q获取这一匚w?
(?:pattern) 匚wpattern 但不获取匚wl果Q也是说这是一个非获取匚wQ不q行存储供以后用?
(?=pattern) 正向预查Q在M匚w pattern 的字W串开始处匚w查找字符丌Ӏ这是一个非获取匚wQ也是_该匹配不需要获取供以后使用?
(?!pattern) 负向预查Q与(?=pattern)作用相反
x|y 匚w x ?y?
[xyz] 字符集合?
[^xyz] 负值字W集合?
[a-z] 字符范围Q匹配指定范围内的Q意字W?
[^a-z] 负值字W范_匚wM不在指定范围内的L字符?
\b 匚w一个单词边界,也就是指单词和空格间的位|?br />
\B 匚w非单词边界?
\cx 匚w由x指明的控制字W?
\d 匚w一个数字字W。等价于 [0-9]?
\D 匚w一个非数字字符。等价于 [^0-9]?
\f 匚w一个换늬。等价于 \x0c ?\cL?
\n 匚w一个换行符。等价于 \x0a ?\cJ?
\r 匚w一个回车符。等价于 \x0d ?\cM?
\s 匚wMI白字符Q包括空根{制表符、换늬{等。等价于[ \f\n\r\t\v]?
\S 匚wM非空白字W。等价于 [^ \f\n\r\t\v]?
\t 匚w一个制表符。等价于 \x09 ?\cI?
\v 匚w一个垂直制表符。等价于 \x0b ?\cK?
\w 匚w包括下划U的M单词字符。等价于’[A-Za-z0-9_]’?
\W 匚wM非单词字W。等价于 ’[^A-Za-z0-9_]’?
\xn 匚w nQ其?n 为十六进制{义倹{十六进制{义值必Mؓ定的两个数字长?br />
\num 匚w numQ其中num是一个正整数。对所获取的匹配的引用?
\n 标识一个八q制转义值或一个后向引用。如?\n 之前臛_ n 个获取的子表辑ּQ则 n 为后向引用。否则,如果 n 为八q制数字 (0-7)Q则 n Z个八q制转义倹{?
\nm 标识一个八q制转义值或一个后向引用。如?\nm 之前臛_有is preceded by at least nm 个获取得子表辑ּQ则 nm 为后向引用。如?\nm 之前臛_?n 个获取,?n Z个后跟文?m 的后向引用。如果前面的条g都不满Q若 n ?m 均ؓ八进制数?(0-7)Q则 \nm 匹配八q制转义?nm?
\nml 如果 n 为八q制数字 (0-3)Q且 m ?l 均ؓ八进制数?(0-7)Q则匚w八进制{义?nml?
\un 匚w nQ其?n 是一个用四个十六q制数字表示的Unicode字符?
匚w中文字符的正则表辑ּQ?[u4e00-u9fa5]
匚w双字节字W?包括汉字在内)Q[^x00-xff]
应用Q计字W串的长度(一个双字节字符长度?QASCII字符?Q?/p>
String.prototype.len=function(){return this.replace([^x00-xff]/g,"aa").length;}
匚wI的正则表辑ּQn[s| ]*r
匚wHTML标记的正则表辑ּQ?<(.*)>.*</1>|<(.*) />/
匚w首尾I格的正则表辑ּQ?^s*)|(s*$)
应用Qjavascript中没有像vbscript那样的trim函数Q我们就可以利用q个表达式来实现Q如下:
String.prototype.trim = function()
{
return this.replace(/(^s*)|(s*$)/g, "");
}
利用正则表达式分解和转换IP地址Q?/p>
下面是利用正则表辑ּ匚wIP地址QƈIP地址转换成对应数值的JavascriptE序Q?/p>
function IP2V(ip)
{
re=/(d+).(d+).(d+).(d+)/g //匚wIP地址的正则表辑ּ
if(re.test(ip))
{
return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
}
else
{
throw new Error("Not a valid IP address!")
}
}
不过上面的程序如果不用正则表辑ּQ而直接用split函数来分解可能更单,E序如下Q?/p>
var ip="10.100.20.168"
ip=ip.split(".")
alert("IP值是Q?+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))
匚wEmail地址的正则表辑ּQw+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
匚w|址URL的正则表辑ּQhttp://([w-]+.)+[w-]+(/[w- ./?%&=]*)?
利用正则表达式去除字串中重复的字W的法E序Q?/p>
var s="abacabefgeeii"
var s1=s.replace(/(.).*1/g,"$1")
var re=new RegExp("["+s1+"]","g")
var s2=s.replace(re,"")
alert(s1+s2) //l果为:abcefgi
我原来在CSDN上发贴寻求一个表辑ּ来实现去除重复字W的ҎQ最l没有找刎ͼq是我能惛_的最单的实现Ҏ。思\是用后向引用取出包括重复的字符Q再以重复的字符建立W二个表辑ּQ取C重复的字W,两者串q。这个方法对于字W顺序有要求的字W串可能不适用?/p>
得用正则表达式从URL地址中提取文件名的javascriptE序Q如下结果ؓpage1
s="http://www.9499.net/page1.htm"
s=s.replace(/(.*/){0,}([^.]+).*/ig,"$2")
alert(s)
利用正则表达式限制网表单里的文本框输入内容Q?/p>
用正则表辑ּ限制只能输入中文Qonkeyup="value=value.replace(/[^u4E00-u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^u4E00-u9FA5]/g,''))"
用正则表辑ּ限制只能输入全角字符Q?onkeyup="value=value.replace(/[^uFF00-uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^uFF00-uFFFF]/g,''))"
用正则表辑ּ限制只能输入数字Qonkeyup="value=value.replace(/[^d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))"
用正则表辑ּ限制只能输入数字和英文:onkeyup="value=value.replace(/[W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))"
设计更多的语法的a论。现实中QC++的库门类J多Q解决的问题也是极其q泛Q库从轻量到重量
的都有。不都是让人眼界大开Q亦或是望而生叹的思维C。由于库的数量非常庞大,而且限于W?/p>
水^Q其中很多ƈ不了解。所以文中所提的一些库都是比较著名的大型库?/p>
标准?/p>
标准库中提供了C++E序的基本设施。虽然C++标准库随着C++标准折腾了许多年Q直到标准的出台才正
式定型,但是在标准库的实C却很令hƣ慰得看到多U实玎ͼq且已被实践证明为有工业U别强度?/p>
佳作?/p>
1、 ?Dinkumware C++ Library
P.J. Plauger~写的高品质的标准库。P.J. Plauger博士是Dr. Dobb'sE序设计杰出奖的获得者。其~?/p>
写的库长期被Microsoft采用Qƈ且最qBorland也取得了其OEM的licenseQ在其C/C++的品中采用
Dinkumware的库?/p>
2、 ?RogueWave Standard C++ Library
参考站点:
w.roguewave.com/
q个库在Borland C++ Builder的早期版本中曄被采用,后来被其他的库给替换了。笔者不推荐使用
?/p>
3、SGI STL
参考站点:
w.roguewave.com/
SGI公司的C++标准模版库?/p>
4、STLport
SGI STL库的跨^台可UL版本?/p>
准标准库——Boost
Boost库是一个经q千锤百点{可UL、提供源代码的C++库,作ؓ标准库的后备Q是C++标准化进E的
发动Z一?Boost库由C++标准委员会库工作l成员发P在C++C中媄响甚大,其成员已q?000?/p>
?Boost库ؓ我们带来了最新、最酗最实用的技术,是不折不扣的“准”标准库?/p>
Boost中比较有名气的有q么几个库:
Regex
正则表达式库
Spirit
LL parser frameworkQ用C++代码直接表达EBNF
Graph
囄件和法
Lambda
在调用的地方定义短小匿名的函数对象,很实用的functional功能
concept check
查泛型编E中的concept
Mpl
用模板实现的元编E框?/p>
Thread
可移植的C++多线E库
Python
把C++cd函数映射到Python之中
Pool
内存池管?/p>
smart_ptr
5个智能指针,学习指针必读Q一份不错的参考是来自CUJ的文章:
Smart Pointers in Boost,哦,q篇文章可以查到QCUJ是提供在U浏览的。中文版见笔者在《Dr.
Dobb's Journal软g研发杂志》第7辑上的译文?/p>
BoostM来说是实用h值很高,质量很高的库。ƈ且由于其对跨q_的强调,Ҏ准C++的强调,是编
写^台无养ICC++的开发者必备的工具。但是Boost中也有很多是实验性质的东西,在实际的开发中
实用需要}慎。ƈ且很多Boost中的库功能堪U对语言功能的扩展,其构造用精巧的手法Q不要N?/p>
的花Ҏ间研诅RBoost另外一面,比如Graphq样的库则是h工业强度Q结构良好,非常值得研读?/p>
_֓代码Qƈ且也可以攑ֿ的在产品代码中多多利用?/p>
参考站点:Q国内镜像:
Q?/p>
GUI 在众多C++的库中,GUI部分的库是比较J荣Q也比较引h注目的。在实际开发中QGUI库的选择也是 非常重要的一件事情,下面我们lD一下可选择的GUI库,各自的特点以及相兛_L支持?/p>
1、 ?MFC 大名鼎鼎的微软基cdQMicrosoft Foundation ClassQ。大凡学qVC++的h都应该知道这个库。虽 然从技术角度讲QMFC是不大漂亮的Q但是它构徏于Windows API 之上Q能够ɽE序员的工作更容?~?/p>
E效率高Q减了大量在徏?Windows E序时必ȝ写的代码Q同时它q提供了所有一?C++ ~程?/p>
优点Q例如承和装。MFC ~写的程序在各个版本的Windows操作pȝ上是可移植的Q例如,? Windows 3.1下编写的代码可以很容易地UL?Windows NT ?Windows 95 上。但是在最q发展以?/p>
官方支持上日渐势微?/p>
2、 ?QT Qt是Trolltech公司的一个多q_的C++囑Ş用户界面应用E序框架。它提供l应用程序开发者徏立艺?/p>
U的囑Ş用户界面所需的所用功能。Qt是完全面向对象的很容易扩展,q且允许真正地组件编E。自?/p>
1996q早些时候,Qtq入商业领域Q它已经成ؓ全世界范围内数千U成功的应用E序的基。Qt也是?/p>
行的Linux桌面环境KDE 的基Q同时它q支持Windows、Macintosh、Unix/X11{多U^台?/p>
3、WxWindows 跨^台的GUI库。因为其cdơ极像MFCQ所以有文章介绍从MFC到WxWindows的代码移植以实现跨^台的 功能。通过多年的开发也是一个日完善的GUI库,支持同样不弱于前面两个库。ƈ且是完全开放源?/p>
码的。新q的C++ Builder X的GUI设计器就是基于这个库的?/p>
4、Fox 开放源代码的GUI库。作者从自己亲n的开发经验中得出了一个理想的GUI库应该是什么样子的感受出发 Q从而开始了对这个库的开发。有兴趣的可以尝试一下?/p>
5、 ?WTL ZATL的一个库。因Z用了大量ATL的轻量手法Q模板等技术,在代码尺寸,以及速度优化斚w?/p>
得非常到位。主要面向的使用体是开发COM轻量U供|络下蝲的可视化控g的开发者?/p>
6、 ?GTK 参考网站:http://gtkmm.sourceforge.net/ GTK是一个大名鼎鼎的C的开源GUI库。在Linux世界中有Gnomeq样的杀手应用。而GTK是q个库的C++ 装版本?/p>
ACE 参考网站: C++库的代表Q超重量U的|络通信开发框架。ACE自适配通信环境QAdaptive Communication EnvironmentQ是可以自由使用、开放源代码的面向对象框Ӟ在其中实C许多用于q发通信软g?/p>
核心模式。ACE提供了一l丰富的可复用C++包装外观QWrapper FacadeQ和框架lgQ可跨越多种q_ 完成通用的通信软gdQ其中包括:事g多\分离和事件处理器分派、信号处理、服务初始化、进E?/p>
间通信、共享内存管理、消息\由、分布式服务动态(重)配置、ƈ发执行和同步Q等{?/p>
StreamModule 设计用于化编写分布式E序的库。尝试着使得~写处理异步行ؓ的程序更ҎQ而不是用同步的外?/p>
包v异步的本质?/p>
SimpleSocket 参考网站:http://home.hetnet.nl/~lcbokkers/simsock.htm q个cd让编写基于socket的客?服务器程序更加容易?/p>
A Stream Socket API for C++ 参考网站: 又一个对Socket的封装库?/p>
XML Xerces 参考网站:http://xml.apache.org/xerces-c/ Xerces-C++ 是一个非常健壮的XML解析器,它提供了验证Q以及SAX和DOM API。XML验证在文档类型定 ?Document Type DefinitionQDTD)斚w有很好的支持Qƈ且在2001q?2月增加了支持W3C XML Schema 的基本完整的开放标准?/p>
XMLBooster q个库通过产生特制的parser的办法极大的提高了XML解析的速度Qƈ且能够生相应的GUIE序来修?/p>
q个parser。在DOM和SAX两大LXML解析办法之外提供了另外一个可行的解决Ҏ?/p>
Pull Parser 参考网站: xpp/ q个库采用pullҎ的parser。在每个SAX的parser底层都有一个pull的parserQ这个xpp?/p>
q层暴露出来直接l大家用。在要充分考虑速度的时候值得试?/p>
Xalan 参考网站:http://xml.apache.org/xalan-c/ Xalan是一个用于把XML文转换为HTMLQ纯文本或者其他XMLcd文的XSLT处理器?/p>
CMarkup q是一U用EDOM的XML解析器。在很多思\上面非常灉|实用。值得大家在DOM和SAX之外?/p>
求一点灵感?/p>
libxml++
http://libxmlplusplus.sourceforge.net/
libxml++是对著名的libxml XML解析器的C++装版本 U学计算 Blitz++ Blitz++ 是一个高效率的数D函数库Q它的设计目的是希望建立一套既具像C++ 一h便,同时?/p>
比Fortran速度更快的数D环境。通常Q用C++所写出的数值程序,?Fortran?0%左右Q因?/p>
Blitz++正是要改掉这个缺炏V方法是利用C++的template技术,E序执行甚至可以比Fortran更快?/p>
Blitz++目前仍在发展中,对于常见的SVDQFFTsQQMRES{常见的U性代数方法ƈ不提供,不过使用?/p>
可以很容易地利用Blitz++所提供的函数来构徏?/p>
POOMA 参考网站: POOMA是一个免费的高性能的C++库,用于处理q行式科学计。POOMA的面向对象设计方便了快速的E?/p>
序开发,对ƈ行机器进行了优化以达到最高的效率Q方便在工业和研I环境中使用?/p>
MTL Matrix Template Library(MTL)是一个高性能的泛型组件库Q提供了各种格式矩阵的大量线性代数方?/p>
的功能。在某些应用使用高性能~译器的情况下,比如Intel的编译器Q从产生的汇~代码可以看出其 与手写几乎没有两L效能?/p>
CGAL 参考网站:www.cgal.org Computational Geometry Algorithms Library的目的是把在计算几何斚w的大部分重要的解x案和 Ҏ以C++库的形式提供l工业和学术界的用户?/p>
游戏开?/p>
Audio/Video 3D C++ Programming Library 参考网站: v/ AV3D是一个跨q_Q高性能的C++库。主要的Ҏ是提供3D囑ŞQ声效支持(SB,以及S3MQ,控制接口 Q键盘,鼠标和遥感)QXMS?/p>
KlayGE 参考网站:http://home.g365.net/enginedev/ 国内游戏开发高手自qC++开发的游戏引擎。KlayGE是一个开放源代码、跨q_的游戏引擎,q?/p>
Python作脚本语a。KlayGE在LGPL协议下发行。感谢龚敏敏先生Z国游戏开发事业所做出的A献?/p>
OGRE OGREQ面向对象的囑Ş渲染引擎Q是用C++开发的Q用灵zȝ面向对象3D引擎。它的目的是让开发?/p>
能更方便和直接地开发基?Dg讑֤的应用程序或游戏。引擎中的类库对更底层的pȝ库(如: Direct3D和OpenGLQ的全部使用l节q行了抽象,q提供了Z现实世界对象的接口和其它cR?/p>
U程 C++ Threads 参考网站:http://threads.sourceforge.net/ q个库的目标是给E序员提供易于用的c,q些c被l承以提供在Linux环境中很隄到的大量的线 E方面的功能?/p>
ZThreads 参考网站:http://zthread.sourceforge.net/ 一个先q的面向对象Q跨q_的C++U程和同步库?/p>
序列?/p>
s11n 参考网站:http://s11n.net/ 一个基于STL的C++库,用于序列化PODQSTL容器以及用户定义的类型?/p>
Simple XML Persistence Library 参考网站:http://sxp.sourceforge.net/ q是一个把对象序列化ؓXML的轻量的C++库?/p>
字符?/p>
C++ Str Library 操作字符串和字符的库Q支持Windows和支持gcc的多U^台。提供高度优化的代码Qƈ且支持多U程?/p>
境和UnicodeQ同时还有正则表辑ּ的支持?/p>
Common Text Transformation Library 参考网站:http://cttl.sourceforge.net/ q是一个解析和修改STL字符串的库。CTTL substringcd以用来比较,插入Q替换以及用EBNF的语?/p>
q行解析?/p>
GRETA 参考网站:http://research.microsoft.com/projects/greta/ q是由微软研I的研Ih员开发的处理正则表达式的库。在型匚w的情况下有非怼U的表现?/p>
l合 P::Classes 参考网站:http://pclasses.com/ 一个高度可UL的C++应用E序框架。当前关注类型和U程安全的signal/slot机制Qi/opȝ包括Z 插g的网l协议透明的i/o架构Q基于插件的应用E序消息日志框架Q访问sql数据库的cȝ{?/p>
ACDK - Artefaktur Component Development Kit
|络通信