关于UTF8,UTF16,UTF32,UTF16-LE,UTF16-BE Unicode是Unicode.org制定的编码标准,目前得到了绝大部分[请注意文明用语]作系统和编程语言的支持。Unicode.org官方对 Unicode的定义是:Unicode provides a unique number for every character。可见,Unicode所做的是为每个字符定义了一个相应的数字表示。比如,“a“的Unicode值是0x0061,“一”的 Uni
DefineDosDevice函数控制虚拟驱动器 1、函数简介BOOL WINAPI DefineDosDevice( __in DWORD dwFlags, __in LPCTSTR lpDeviceName, __in LPCTSTR lpTargetPath);参数:DWORD dwFlags,该函数的控制标志,可取下列值: DDD
_T与L 的作用 VC _T的用途VC++里面定义字符串的时候,用_T来保证兼容性。VC++支持ascii和unicode两种字符类型,用_T可以保证从ascii编码类型转换到unicode编码类型的时候,程序不需要修改。如果将来你不打算升级到unicode,那么也不需要_T。_t("hello world")在ansi的环境下,它是ansi的,如果在unicode下,那么它将自动解释为双字节字符串
boost bind使用指南 bind - boost头文件: boost/bind.hppbind是一组重载的函数模板.用来向一个函数(或函数对象)绑定 某些参数. bind的返回值是一个函数对象. 它的源文件太长了. 看不下去. 这里只记下它的用法: 9.1 对于普通函数假如有函数 fun() 如下: void fun(int x, int y) {cout }现在我们看看怎么用
SQLite SQLite 创建当前时间列(格林尼治标准时间)当前时间列,由于默认的时间是以格林尼治标准时间为基准的,因此在中国使用的话会正好早8个小时。方法1:create table log( content varchar(256), logtime datetime default (datetime('now'))) 方法2:create table log( content va
std 异常 头文件C++标准异常类层次结构:std::exception基类std::logic_errorstd::domain_errorstd::invalid_argumentstd::length_errorstd::out_of_range破坏了逻辑条件的编程错误运行之前违例; 如系统不支持的情况下给函数传递了非法值试图创建的
Boost之string算法库 标准库里的string虽然功能强大,但它还是缺少很多常用功能,如trim,大小写转换等。作为标准库的补充,Boost承担起了弥补这些缺点的任务,于是就有了Boost String Algorithms Library快速参考Boost.String Algo提供了标准库中没有提供的字符串操作功能,比如大小写转换,正则表达式查找等。它的命名规则是:如果函数是大小写无关的,则带有前缀i
boost::string_algo 简介string algorithm是boost中提供字符串算法的类库。在这里,字符串不一定是std::basic_string,也可以是其它的stl容器或是c++中的零结尾字符串char*。例:std::string str("Hello");std::vectorchar> vstr(str.begin(), str.end());char *cstr=
开源C++函数库Boost内存池使用与测试 Boost库是一个可移植的开源C++函数库,鉴于STL(标准模板库)已经成为C++语言的一个组成部分,可以毫不夸张的说,Boost是目前影响最大的通用C++库。Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容,是一个“准”标准库。Boost内存池,即boost.pool库,是由Boost提供的一个用于内存池管理的开源C++库。作为Boost中影响较大的
c++ explicit关键字 1、c++中的explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有"显式"那么必然就有"隐式",那么什么是显示而什么又是隐式的呢?如果c++类的构造函数有一个参数,那么在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class MyClass{public:MyClass( int num );}
VS2010 + STLport + Boost 的编译使用 Visual Studio 2010 下编译使用 STLport 库和 Boost 库,需要做一些小处理,特记录一下:首先,下载、解压、安装,这个就不详细说明了,可以看下面的参考或者搜索一下就有很多了。然后,修改 “stlport\stl\_cstdlib.h” 文件,在 158 行附近找到下面的一行代码:[cpp] view plaincopy
关于字符集的专题知识 UTF-8 GB2312 UNICODE 此文介绍了UTF8和GB2312间的互换并提供代码,但是代码有误,现修改如下:class CChineseCodeLib {public:static void UTF_8ToGB2312(string& pOut,char *pText, int pLen);static void GB2312ToUTF_8(string& pOut,char *pText, int pL
new分配内存 空间分配 接下来我们要考虑内存分配信息的组织问题了。我们先来了解一下编译器是怎么组织的。在大部分编译器中,new所分配的空间都要大于实际申请的空间,大出来的部分就是编译器定义的内存块的信息,包括了内存块的大小还有一些其他信息。如下图所示: 我们把包含内存分配信息的部分叫做cookie数据。为了方便,我们把cookie数据放在分配的内存的起始位置,之后紧接有效
VS2010 VC Project的default Include设置 唉,好久没有写blog了。这两天刚装好VS2010试用,发觉VC10在Projecct Settings方面和以前不同了。一个最大的不同是:VC Directory设置的位置和以前的版本不一样。VS2010之前,VC Directory的设置都是在IDE的Tools->Options中设置的;VS2010改为,分别在每个项目中的Properties中设置。如下图:难道要每个项目
Doxygen详细介绍 1 序言 为代码写注释一直是大多数程序员有些困扰的事情。当前程序员都能接受为了程序的可维护性、可读性编码的同时写注释的说法,但对哪些地方应该写注释,注释如何写,写多少等这些问题,很多程序员仍然没有答案。更头痛的是写文档,以及维护文档的问题,开发人员通常可以忍受编写或者改动代码时编写或者修改对应的注释,但之后需要修正相应的文档却比较困难。如果能从注释直接转化成文档,对开发人员无疑是
warning C4273: dll链接不一致 方法1: 选择项目->属性->预处理器->预处理定义, 增加:HYCOMMONWINAPI_EXPORTS方法2:就是在#ifdef HYCOMMONWINAPI_EXPORTS#define HYCOMMONWINAPI_API __declspec(dllexport)#else#define HYCOMMONWINAPI_API __declspec(dllimp
warning C4996: “strcpy”被声明为否决的解决办法 VC2005中,使用了很多标准的C函数,比如fopen,strcpy之类的。编译时会出现警告,比如这个: d:\xxxx.c(1893) : warning C4996: “strcpy”被声明为否决的 紧接着IDE有提示说:“This function or variable may be unsafe. Consider using strcpy_s ins
Boost Thread学习笔记 Boost Thread学习笔记thread自然是boost::thread库的主 角,但thread类的实现总体上是比较简单的,前面已经说过,thread只是一个跨平台的线程封装库,其中按照所使用的编译选项的不同,分别决定使用 Windows线程API还是pthread,或者Macintosh Carbon平台的thread实现。以下只讨论Windows,即使用 BOOST_HAS_
PowerDesigner 面向对象模型(OOM)说明 一. OOM 简介Object-OrientedModel(OOM) 面向对象模型,一个OOM包含一系列包,类,接口 , 和他们的关系。 这些对象一起形成所有的 ( 或部份) 一个软件系统的逻辑的设计视图的类结构。 一个OOM本质上是软件系统的一个静态的概