
转帖好文
文章平均质量分 78
一劳永逸
IT宅男
展开
-
几个正则表达式生成工具
几个正则表达式生成工具http://d.download.youkuaiyun.com/down/342735/wizardlsw正则表达式生成超级工具The Regulator推荐三个,理由如下 第一个,REGEX 这个工具优点是中文的,提供了一些示例转载 2011-10-14 10:19:09 · 3088 阅读 · 0 评论 -
boost::any 与 boost::variant 的区别
<br />在使用boost::any 和 boost::variant的过程中遇到几个小问题,按个人理解对二者做了一下比较。令人最遗憾的是boost::any与boost::serialization 不兼容。 More...<br /><br /><br />boost::any<br />* 非模板类<br />这意味着即时是跨dll也可以方便地使用,支持无限种变量。<br />* boost::serialization<br />不支持。有人对此进行了激烈的讨论,在这里转载 2010-10-10 16:31:00 · 4245 阅读 · 0 评论 -
获取文件和文件夹大小
方法一: WIN32_FIND_DATA fileInfo; HANDLE hFind; DWORD fileSize; const char *fileName = 文件的路径及名字; hFind = FindFirstFile(fileName ,&fileInfo); if(hFind != INVALID_HANDLE_VALUE) fileSize = fileInfo.nFileSizeLow; FindClose(hFind); 方法二:HANDLE hFile; // the file ha转载 2010-09-21 14:42:00 · 2060 阅读 · 0 评论 -
彻底解密C++宽字符:5、利用fstream转换
<br />C++的流和本地化策略集<br /><br />BS在设计C++流的时候希望其具备智能化,并且是可扩展的智能化,也就是说,C++的流可以“读懂”一些内容。比如:<br />std::cout << 123 << "ok" << std::endl;这句代码中,std::cout是能判断出123是int而"ok"是const char[3]。利用流的智能,甚至可以做一些基础类型的转换,比如从int到string,string到int:<br />std::string str("123");<转载 2010-07-16 19:43:00 · 2987 阅读 · 1 评论 -
彻底解密C++宽字符:6、国际化策略(完)
<br /><br />硬编码的硬伤<br /><br />我们现在知道,C/C++的宽窄转换是依赖系统的locale的,并且在运行时完成。考虑这样一种情况,我们在简体中文Windows下编译如下语句:<br />const char* s = "中文abc";<br />根据我们之前的讨论,编译器将按照Windows Codepage936(GB2312)对这个字符串进行编码。如果我们在程序中运行宽窄转换函数,将s转换为宽字符串ws,如果这个程序运行在简体中文环境下是没问题的,将执行从GB2312到UCS转载 2010-07-16 19:43:00 · 2683 阅读 · 0 评论 -
彻底解密C++宽字符:4、利用codecvt和use_facet转换
locale和facetC++的locale框架比C更完备。C++除了一个笼统本地策略集locale,还可以为locale指定具体的策略facet,甚至可以用自己定义的facet去改造一个现有的locale产生一个新的locale。如果有一个facet类NewFacet需要添加到某个old_loc中形成新new_loc,需要另外一个构造函数,通常的做法是:std::locale new_loc(old_loc, new NewFacet);标准库里的标准facet都具有自己特有的功能,访问一转载 2010-07-16 19:42:00 · 6416 阅读 · 1 评论 -
彻底解密C++宽字符:3、利用C运行时库函数转换
<br />std::locale<br /><br />通过前面两节的知识,我们知道了在C/C++中,字符(串)和宽字符(串)之间的转换不是简单的,固定的数学关系,宽窄转换依赖于本地化策略集(locale)。换句话说,一个程序在运行之前并不知道系统的本地化策略集是什么,程序只有在运行之后才通过locale获得当时的本地化策略集。<br />C有自己的locale函数,我们这里直接介绍C++的locale类。<br />先讨论locale的构造函数:<br />locale() throw();<br />转载 2010-07-16 19:41:00 · 3200 阅读 · 0 评论 -
彻底解密C++宽字符:2、Unicode和UTF
<br />Unicode和UCS<br /><br />Unicode和UCS是两个独立的组织分别制定的一套编码标准,但是因为历史的原因,这两套标准是完全一样的。Unicode这个词用得比较多的原因可能是因为比较容易记住,如果没有特别的声明,在本文所提及的Unicode和UCS就是一个意思。Unicode的目标是建立一套可以包含人类所有语言文字符号你想得到想不到的各种东西的编码,其编码容量甚至预留了火星语以及银河系以外语言的空间——开个玩笑,反正简单的说,Unicode编码集足够的大,如果用计算机单位来表转载 2010-07-16 19:40:00 · 2628 阅读 · 0 评论 -
彻底解密C++宽字符:1、从char到wchar_t
<br />“这个问题比你想象中复杂”<br />(我也学下BS的风格,虽然这句话是我自己临时想说的。^^)<br /><br />从字符到整数<br /><br />char是一种整数类型,这句话的含义是,char所能表示的字符在C/C++中都是整数类型。好,接下来,很多文章就会举出一个典型例子,比如,'a'的数值就是0x61。这种说法对吗?如果你细心的读过K&R和BS对于C和C++描述的原著,你就会马上反驳道,0x61只是'a'的ASCII值,并没有任何规定C/C++的char值必须对应ASCII。C/转载 2010-07-16 19:39:00 · 3335 阅读 · 0 评论 -
正则表达式学习笔记
正则表达式学习笔记 正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。 列目录时, dir *.txt或ls *.txt中的*.txt就不是一个正则表达式,因为这里*与正则式的*的含义是不同的。 为便于理解和记忆,先从一些概念入手,所有特殊字符或字符组合有转载 2010-05-15 01:43:00 · 434 阅读 · 0 评论 -
正则表达式使用详解(二)
使用实例 在对正则表达式有了较为全面的了解之后,我们就来看一下如何在Perl,PHP,以及JavaScript中使用正则表达式。 通常,Perl中正则表达式的使用格式如下: operator / regular-expression / string-to-replace / modifiers 运算符一项可以是m或s,分别代表匹配运算和替换运算。 其中,正则表达式一项是将要进行匹配或替转载 2010-05-15 01:38:00 · 436 阅读 · 0 评论 -
深入浅出正则表达式(二)
前言: 在本文中讲述了正则表达式中的组与向后引用,先前向后查看,条件测试,单词边界,选择符等表达式及例子,并分析了正则引擎在执行匹配时的内部机理。 本文是Jan Goyvaerts为RegexBuddy写的教程的译文,版权归原作者所有,欢迎转载。但是为了尊重原作者和译者的劳动,请注明出处!谢谢!9. 单词边界元字符>也是一种对位置进行匹配的“锚”。这种匹配是0长度匹配。有转载 2010-05-15 01:33:00 · 463 阅读 · 0 评论 -
正则表达式使用详解(一)
如果我们问那些UNIX系统的爱好者他们最喜欢什么,答案除了稳定的系统和可以远程启动之外,十有八九的人会提到正则表达式;如果我们再问他们最头痛的是什么,可能除了复杂的进程控制和安装过程之外,还会是正则表达式。那么正则表达式到底是什么?如何才能真正的掌握正则表达式并正确的加以灵活运用?本文将就此展开介绍,希望能够对那些渴望了解和掌握正则表达式的读者有所助益。入门简介 简单的说,正则表达式是一种可以用转载 2010-05-15 01:37:00 · 501 阅读 · 0 评论 -
深入浅出正则表达式(一)
前言: 半年前我对正则表达式产生了兴趣,在网上查找过不少资料,看过不少的教程,最后在使用一个正则表达式工具RegexBuddy时发现他的教程写的非常好,可以说是我目前见过最好的正则表达式教程。于是一直想把他翻译过来。这个愿望直到这个五一长假才得以实现,结果就有了这篇文章。关于本文的名字,使用“深入浅出”似乎已经太俗。但是通读原文以后,觉得只有用“深入浅出”才能准确的表达出该教程给转载 2010-05-15 01:27:00 · 732 阅读 · 0 评论 -
__cdecl,__stdcall,__fastcall的区别
<br />CONTENT: Visual C++ Compiler Options可以指定的Calling Convention有 3种:<br /><br /> /Gd /Gr /Gz<br /><br /> 这三个参数决定了:<br /><br /> 1.函数参数以何种顺序入栈,右到左还是左到右。<br /> 2.在函数运行完后,是调用函数还是被调用函数清理入栈的参数。<br /> 3.在编译时函数名字是如何转换的。<br /><br /> 下面我们分别详细介转载 2011-01-04 23:18:00 · 785 阅读 · 0 评论 -
C 标准库的 setlocale() 函数用法
<br /><br />C 和 C++ 的标准库分别有自己的 locale 操作方法,C 标准库的 locale 设定函数是 setlocale(),而 C++ 标准库有 locale 类和流对象的 imbue() 方法。这篇讲解 C 标准库中 setlocale() 的使用。<br /> GNU libc 中的 setlocale()<br />参考:man 3 setlocale<br />头文件与声明如下:#include <locale.h>char* setlocale(int categor转载 2011-01-04 23:22:00 · 23880 阅读 · 1 评论 -
ACE 的头文件包含
<br /><br />在使用 ACE 的过程中,发现项目组程序都是在使用到那个头文件的时候就引入一个头文件,结果一些头文件重复引用(在不同的文件中进行了重复引用),现在对 ACE 的头文件进行分类整理如下:将所有的头文件按照功能的不同依次包含消除互相包含中的基本头文件<br />整理后,任何工程只需要包含该头文件即可, 如果是在支持预编译的编译器上进行编译,还可以将该头文件直接包含在预编译头文件中,整理后的ACE头文件如下://=======================================转载 2011-01-01 20:41:00 · 2533 阅读 · 0 评论 -
tooltip2 与 ctooltipctrl 小结
MFC中有一个CToolTipCtrl类,想必大家都知道,近来我在一个项目中需要在ActiveX Control上为特定的控件或区域添加提示.开始使用CToolTipCtrl,但发现它根本就不工作.无奈,只好自己写了一个类来实现它.该类为CTip(包含CTip.c和CTip.转载 2011-08-24 09:12:13 · 1590 阅读 · 0 评论 -
map自定义比较函数
template , class Alloc = alloc> 第一个参数Key是关键字类型第二个参数T是值类型第三个参数Compare是比较函数(仿函数)第四个参数是内存配置对象 Map中的关键字,起码必须有“”这个比较操作转载 2011-09-13 22:05:28 · 6918 阅读 · 0 评论 -
关于stl里set容器的自定义排序
最近结合stl看数据结构,对许多原本半生不熟的知识都有了点领悟,大家知道stl里无论是向量还是容器的sort算法都很有用也很方便.但是似乎大家一直都是用int类型来初始化这些对象,那我用自定义的一个结构来对初始化这些对象,并且想对结构里的某一个元素的大小来排序,该怎么办呢,我上网转载 2011-09-13 22:04:26 · 3350 阅读 · 0 评论 -
通用数据压缩算法简介
通用数据压缩算法简介前言数据压缩技术始终是让我感觉到比较神秘的数学算法之一,而当我接触到其具体的算法时候,发现其原理是如此的简单,所以就写了这篇文件来谈谈自己的感想。但由于本文篇幅有限,就以只以一个最简单的LZ77算法作为例子来讲解。数据压缩技术其应用十分普遍原创 2011-07-06 09:45:05 · 1315 阅读 · 0 评论 -
向量几何在游戏编程中的使用系列
今天看到一个游戏编程的系列文章,是关于向量的使用,觉得有必要记录一下。以后有时间好好研读一下:http://blog.youkuaiyun.com/xueyong1203/article/category/358696原创 2011-07-06 09:32:45 · 697 阅读 · 0 评论 -
如何安装并使用Windows Symbol
<br />1. 下载符合你所运行的Windows版本的Windows Symbol Package:http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx<br />安装路径随便你选,我一般就是默认的路径:C:/Windows/Symbols。当然这个东东不装也可以,不过我推荐安装,因为把所有的Symbol File都从Server上下载下来还是蛮花时间的,有了这个东东,大部分的Symbol File都可以直接在本地找到。<br />转载 2011-04-28 15:11:00 · 9448 阅读 · 0 评论 -
《Windows用户态程序高效排错》 中涉及到的链接
<br />为了方便使用,我把 《Windows用户态程序高效排错》 中涉及到的链接都做成索引放到这里。其中好多链接本来是在我MSN Space blog上的,由于担心教育网用户可能无法访问MSN Blog,所以把相关的MSN Space上的文章也拷贝过来放到了这里。<br />DataSet and DataTable in ADO.NET 2.0<br />http://msdn.microsoft.com/msdnmag/issues/05/11/DataPoints/default.aspx<br转载 2011-04-19 09:54:00 · 1063 阅读 · 0 评论 -
VC命名管道通信的实现
<br />无论是sql server的用户,还是pb的用户,作为c/s结构开发环境,他们在网络通信的实现上,都有一种共同的方法——命名管道。由于当前操作系统的不惟一性,各个系统都有其独自的通信协议,导致了不同系统间通信的困难。尽管tcp/ip协议目前已发展成为internet的标准,但仍不能保证c/s应用程序的顺利进行。命名管道作为一种通信方法,有其独特的优越性,这主要表现在它不完全依赖于某一种协议,而是适用于任何协议——只要能够实现通信。<br /> 命名管道具有很好的使用灵活性,表现在:<b转载 2011-03-08 10:30:00 · 940 阅读 · 0 评论 -
VC++下命名管道编程的原理及实现
<br /> <br /> 概述<br /><br /> 管道(Pipe)实际是用于进程间通信的一段共享内存,创建管道的进程称为管道服务器,连接到一个管道的进程为管道客户机。命名管道(Named Pipes)是在管道服务器和一台或多台管道客户机之间进行单向或双向通信的一种命名的管道。一个命名管道的所有实例共享同一个管道名,但是每一个实例均拥有独立的缓存与句柄,并且为客户——服务通信提供有一个分离的管道。实例的使用保证了多个管道客户能够在同一时间使用同一个命名管道。<转载 2011-01-24 22:35:00 · 733 阅读 · 0 评论 -
鱼和熊掌兼得——在VC++中混用C++异常和结构化异常
<br /><br />很长时间没有更新自己的博客了,今天算是有一点闲暇时间吧,写点东西,献给那些经常关注我博客的网友。今天的话题还是关于异常处理的。<br /> 在我学习C++ 以及VC++ 甚至windows编程的很长一段时间里,对于异常是没什么概念的,也不经常使用,甚至当我看到java的程序员几乎把所有的代码都用异常包裹起来的时候,我都觉得他们有点变态。<br /> 在一个偶然的机会,我也不知道为什么我居然成了一名网游服务端的主程(其实我梦想的是写超炫的客户端),写服务程序,那转载 2011-01-24 23:31:00 · 1204 阅读 · 1 评论 -
你不再需要TinyXML,推荐RapidXML
<br /><br />目前我公司开发的Nexus Engine的底层对象序列化使用了TinyXML来读写XML文件。TinyXML有两个不爽的地方,一是它的接口使用FILE*,另外一个是它对wchar_t不能很好的支持。前阵子看Boost库的更新中多了一个PropertyTree,他在处理XML时用到了另外一个小的库--RapidXML。既然间接的是Boost库的一部分,所以是值得一试的。于是找到其官方网站(http://rapidxml.sourceforge.net/ )研究了一番。一看之下,甚是满意转载 2011-01-22 20:45:00 · 1069 阅读 · 0 评论 -
C/C++ 的位操作
<br />一、位的概念<br /><br />在计算机中,一字节占8位(现在的某些电脑也有占16位的),也即00000000-11111111。位就是里面的0和1。 <br />char c=100; 实际上c应该是01100100,正好是0x64。其中高位在前,低位在后。在某些计算机上面点大在后存储为0x46<br /> 二、位运算符:<br />&与,|或,~非,^异或,<<左移,>>右移 <br />&=自身与、|=自身或、~=自身非、^=自身异或 <br />例如: <br />b=a<<3; 就转载 2011-01-22 20:06:00 · 1285 阅读 · 0 评论 -
C++ 标准库的 locale 类用法
<br /><br />原来一篇总结了下 C 标准库的 setlocale() 用法,这篇讲解的是 C++ 标准库中 locale 类的用法。<br />参考:<br />cplusplus.com 上关于标准 C++ 中国际化支持的参考:<br />Localization library<br />Locale class<br />The C++ Standard Library(Nicolai M. Josuttis,侯捷译)第 14 章 Internationalization(国际化)<br /转载 2011-01-04 23:22:00 · 39660 阅读 · 2 评论 -
单元测试工具Numega
1 前言本文中详细介绍了测试工具NuMega Devpartner(以下简称NuMega)的使用方法。NuMega是一个动态测试工具,主要应用于白盒测试。该工具的特点是学习简单、使用方便、功能有效。NuMega共有三个独立的子功能——BoundsChecker、TrueCoverage、TrueTime。BoundsChecker为代码检错工具,TrueCoverage为测试覆盖率转载 2009-12-31 21:26:00 · 717 阅读 · 0 评论 -
Base64编码、解码的实现(二)
由于项目用到了字节数组与文本互相转换,所以自己写了一对方法用来把字节数组转成可见字符串,及把字符串转成字节数组的BASE64算法。使用toBase64String的时候默认的是加上了回车换行的处理,但是在fromBase64String的时候无论有没有回车换行符都可以正确的转换。这里的算法完全是自己由Base64思想自己完出来的,如果错误敬请指正。使用的示例: BYT转载 2010-02-20 21:56:00 · 924 阅读 · 0 评论 -
接触VC之一:WinSDK
预设目录:第一部分:WinSDK第二部分:MFC类基础,C++程序编写规范介绍第三部分:MFC基于对话框程序第四部分:Dll动态链接库第五部分:COM组件基础第六部分:COM组件几个常用技术:IDispatch,可连接对象.第七部分:COM组件的应用,以及MFC的COM编写第一部分:WinSDK 学习VC已近一年了,回顾我的学习历史真是相当的艰苦。既没有老师教原创 2008-12-19 12:09:00 · 789 阅读 · 1 评论 -
TCP/IP 协议的结构与运行原理[图]
本文目的:巩固自己这方面的知识,作为深入TCP/IP协议族的基础。本文内容:1. TCP/IP协议族组成从字面上理解,TCP/IP协议族只有TCP、IP协议,其实不然。其真正的名字是Internet协议族 (Internet Protocol Suite) 。和大型软件一样,其分为四层:应用层、传输层、网络层、链路层。每一层的功能和目的都是不一样的,每一层上服务的协议也不是有区别的。从上往下看:转载 2008-12-19 12:01:00 · 2339 阅读 · 0 评论 -
C++位运算
什么是位(bit)? 很简单,位(bit)就是单个的0或1,位是我们在计算机上所作一切的基础。计算机上的所有数据都是用位来存储的。一个字节(BYTE)由八个位组成,一个字(WORD)是二个字节或十六位,一个双字(DWORD)是二个字(WORDS)或三十二位。如下所示: 0 1 0 0 0 1 1 1 1转载 2008-11-24 15:31:00 · 481 阅读 · 0 评论 -
wchar_t与char转换
C++标准中,wchar_t是宽字符类型,每个wchar_t类型占2个字节,16位宽。汉字的表示就要用到wchar_t 。char,我们都知道,占一个字节,8位宽。其实知道了这个以后,要在wchar_t 和 char两种类型之间转换就不难实现了。wchar_t 转换为char 的代码如下: 有如下的wchar_t和char变量:wchar_t w_cn = 中; char c_cn[2转载 2008-10-07 16:42:00 · 812 阅读 · 0 评论 -
C#获取硬盘编号、CPU编号及类型、内存大小及使用情况
如果利用C#获取系统有关环境和属性,这个也是在网上问得比较多的问题,不过大部分只有提问没有回答,最近正好想做有关方面的东西,整理了一下,提供给大家,希望能给大家提供参考意见: 首先需要定义几个结构(struct) ,便于DllImport作为返回参数调用。以下是代码: CpuInfo.cs using System; using System.Configuration; using转载 2008-01-11 15:19:00 · 915 阅读 · 0 评论 -
C++ STL轻松导学
Here is a Floating Frame转载 2007-10-30 14:26:00 · 1473 阅读 · 0 评论 -
Internal Iterator vs. External Iterator
A while back I posted about my issues in C# when I was trying to write out an extensible collections API. From the high level perspective I wanted to provide useful concrete implementations of man转载 2007-09-13 10:13:00 · 835 阅读 · 0 评论 -
2007年上半年值得收藏的技术精彩文章
Linux 内核剖析 庞大复杂的 Linux 内核采用了子系统和分层的概念,因此结构非常清晰。本文将带您探索 Linux 内核的总体结构,并学习一些主要的子系统和核心接口。Java SE 6 新特性:HTTP 增强 本文将介绍 Java SE 6 中围绕着 HTTP 协议出现的很多实用的新特性:NTLM 认证的支持;提供了一个轻量级的 HTTP 服务器;提供了较为完善的 HTTP Cookie转载 2007-09-14 10:03:00 · 675 阅读 · 0 评论