随笔分类 - C/C++
摘要:首先,需要明确为什么要把全角转换成半角。 一般在业务实现中,日文或英文可以输入全角,同样的名字用全角和半角输入应该代表同一个意思, 但是在排序中全角要排在半角的后面,这不符合某些人(当然,是所谓产品经理)的逻辑,那只有硬着头皮分析转换咯; 下面我们来看全角和半角所在的unicode区间对照表: 全角
阅读全文
摘要:开发需要,附上中日韩编码区间,满足绝大部分场合使用; 以下根据Unicode国际最新编码5.1筛选: \u9FD5 注:这里之前是9FA5, 5.1新标准又加了几个字 附上链接:http://blog.csdn.net/shuilan0066/article/details/7839114
阅读全文
摘要:首先,微软提供的WinInet库封装了对网页访问的方法。 最近工作需要从https服务器获取数据,都知道https和http网页的访问方式不同,多了一道证书认证程序,这样就使得https在请求起来比http要复杂的多;好在,WinInet库中提供了对https网页请求的处理,这样就不需要在使用openssl中的一些方法来复杂化程序了。 下面贴上我的解决前的代码,再对比我遇到问题之后的代码,在通过实际遇到的问题和环境来阐述: 解决前代码:#include #include #include #include #include "Windows.h"#include "
阅读全文
摘要:转自:http://deerchao.net/tutorials/regex/regex.htm#mission目录跳过目录本文目标如何使用本教程正则表达式到底是什么东西?入门测试正则表达式元字符字符转义重复字符类分枝条件反义分组后向引用零宽断言负向零宽断言注释贪婪与懒惰处理选项平衡组/递归匹配还有些什么东西没提到联系作者网上的资源及本文参考文献更新纪录本文目标30分钟内让你明白正则表达式是什么,并对它有一些基本的了解,让你可以在自己的程序或网页里使用它。如何使用本教程最重要的是——请给我30分钟,如果你没有使用正则表达式的经验,请不要试图在30秒内入门——除非你是超人 :)别被下面那些复杂的
阅读全文
摘要:要理解static,就必须要先理解另一个与之相对的关键字,很多人可能都还不知道有这个关键字,那就是auto,其实我们通常声明的不用static修饰的变量,都是auto的,因为它是默认的,就象short和long总是默认为int一样;我们通常定义一个变量: int a; string s; 其实就是:
阅读全文
摘要:在定义一个dll工程的时候,一添加MFC的头文件就会报出这个 错误:error LNK2005: _DllMain@12 已经在 DLLMain.obj 中定义 既蛋疼又蛋疼!!然后逛论坛,查资料,妹的,都尼玛是去论坛看热闹的,没有一个起的上作用的!无奈之,遂请教。。。于是乎,解决! 在创建Dll工程的时候,需要我们定义一个DllMain的入口函数,问题就出在这里! 当我们添加MFC的头文字时候,MFC默认封装了这个入口函数,你也不知道是哪个头文件里面封装的,但是我包含了这些头文件: 就加了这两个头文件就出了问题!于是只能在自己定义的DllMain.cpp入口函数上做处理,下面是解...
阅读全文
摘要:阻塞I/O模型: 简介:进程会一直阻塞,直到数据拷贝 完成 应用程序调用一个IO函数,导致应用程序阻塞,等待数据准备好。 如果数据没有准备好,一直等待….数据准备好了,从内核拷贝到用户空间,IO函数返回成功指示。阻塞I/O模型图:在调用recv()/recvfrom()函数时,发生在内核中等待数据和复制数据的过程。 当调用recv()函数时,系统首先查是否有准备好的数据。如果数据没有准备好,那么系统就处于等待状态。当数据准备好后,将数据从系统缓冲区复制到用户空间,然后该函数返回。在套接应用程序中,当调用recv()函数时,未必用户空间就已经存在数据,那么此时recv()函数就会处于等待状态。.
阅读全文
摘要:DDE (Dynamic Data Exchange,DDE)动态数据交换,是一种进程间通信机制,它最早是随着Windows由微软提出的。当前大部分软件仍旧支持DDE,但最近十年里微软已经停止发展DDE技术,只保持对它给予兼容和支持。但程序猿仍可以利用DDE技术来编写自己的数据交换程序。一、使用DDE技术通信原理 两个同时运行的程序间通过DDE方式交换数据是C/S关系(客户端/服务器),一旦客户和服务器建立连接关系,则当服务器中的数据发生变化后就会马上通知客户端。通过DDE方式建立的数据连接通道是双向的,即客户端不仅能够读取服务器中的数据,而且可以对其进行修改。 DDE和剪贴板一样既支持标..
阅读全文
摘要:字体的设置在工具->选项->环境->字体和颜色。相信大家在用VS2010的时候都会觉得默认的字体不是很好看,尤其是看的时间长了以后,更是累眼睛,这里推荐一个字体,个人感觉像是加粗加圆滑版的,这个字体是VC6.0里面的默认字体,不过看起来确实会比原先的舒服一些。字体名字叫:Fixedsys Excelsior 3.01,下载地址:http://www.fixedsysexcelsior.com/。安装的话,进控制面板,打开字体,然后把字体复制进去就安装上了,然后打开VS2010,进入工具->选项->环境->字体和颜色,字体里就有Fixedsys Excelsi
阅读全文
摘要:前段时间为了一个项目而把VS2008换成了VS2010,结果原本就不堪重负的本本跑起VS2010来那更是慢得没话说,于是看了遍VS2010选项,又从网上到处找资料找优化方法,总算使我的VS2010跑得快了些。一、VS2010选项视觉体验设置工具->选项->环境视觉体验的勾选都去掉。不解释,你懂得。二、禁用Intellisense工具->选项->文本编辑器->C/C++->高级禁用IntelliSense设为True这个功能很好用。相较于Visual Assist X,Intellisence结果更加准确,但活动也更加频繁,项目一庞大时修改头起来就会使VS变得
阅读全文
摘要:“不要重复造车轮”,这是程序界的经典名言。有很多代码,都有重复使用的可能。如果将这些代码积累起来,形成自己的代码库,那么,日子一久,这个代码库就是一笔财富。当需要其中某个功能的时候,把以前的代码拿出来直接用就是了。这样,不仅提高了工作效率,同时还可以防止重新编码带来的错误,因为代码库里的代码在以前一定是经过严密测试的。那么,如果积累自己的代码库呢?这里可是仁者见仁,智者见智。对于C++程序员,封装成库无疑是最好的选择。但库分静态库和动态库,他们各有千秋,不分仲伯。静态库适用于封装比较短小精悍的功能,而且被其他程序调用时,适合编译到最终的可执行文件里去,而不是“裸露”到外面成为单独一个文件,随安
阅读全文
摘要:一、需要的头文件支持#include // for _beginthread()需要的设置:ProjectSetting-->C/C++-->User run-time library 选择Debug Multithreaded 或者Multithreaded。 即使用: MT或MTD。源码如下:#include #include // for STL string class#include // for HANDLE#include // for _beginthread()using namespace std;class...
阅读全文
摘要:最近用到CString类,转换成 char * 类型,下面介绍用法:一、CString和 LPSTR 转换:CString转换成LPSTR: 方法一:CString server;LPSTR lpStr = server.GetBuffer(0); server.ReleaseBuffer(0);方法二:CString server;LPSTR lpStr = (LPSTR)(LPCSTR)server;LPSTR转换成CString: LPSTR lpStr = L"TestStr"; CString str(lpStr);注意:CString和LPCSTR可直接转换,如
阅读全文
摘要:最近查了几天的资料去写一个网页抓取股票实时数据的程序,网上一堆资料都是翻来覆去的讲解同样的方法,还有都是抓取一般的没有变化的对时间要求不要的网页数据,然而对于股票实时数据的抓取要求的是每秒钟都会由很多股票数据在发生变化,要保证程序能抓取到每秒钟这些变化着的数据,好了,出于这个目的开始在网上搜说数据,很多人建议用libcurl方法,好的,libcurl很强大用起来很简单,也想上边说的那样libcurl对于一般的没有变化的网页来说很强大,libcurl达不到每秒钟刷取网页数据10次以上的速度,而且libcurl还会有读取失败延时,而且是延时2~3秒,也就是说在这2~3秒之内网页上变化的数据抓取不到
阅读全文
摘要:在Linux编译程序时,有的程序会报错如下:#gmake -f dc_debug.mak......./usr/bin/ld: cannot find -ldscompress_x32collect2: ld returned 1 exit statusgmake: *** [dc_shl2_v2....
阅读全文
摘要:查vc++ 6.0 的 msdn找到下面的命令:msdevFileName[/MAKE "ProjectName– ConfigName | ALL"] [/REBUILD /CLEAN /NORECURSE /OUTLogFile/USEENV]参数你可以自己查msdn,具体使用时可以使用很少的参数:msdev 工作区文件(*.dsw)/MAKE "工程文件名称(注意不加dsp) - Win32 Debug"或者msdev 工作区文件(*.dsw)/MAKE "工程文件名称(注意不加dsp) - Win32 Release"或者ms
阅读全文
摘要:具体的解决方法: 这个bug是安装某些软件的时候,vs2010相关的注册表值被修改了,只要改回来就好了。对于32位机器,查找注册表的项:[HKEY_CLASSES_ROOT\CLSID\{73B7DC00-F498-4ABD-AB79-D07AFD52F395}\InProcServer32],把它的默认值修改为:C:\Program Files\Common Files\Microsoft Shared\MSEnv\TextMgrP.dll 而对于64位的机器,查找项:[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{73B7DC00-F498-4ABD-AB79-
阅读全文
摘要:CreateMutexCreateMutex函数的作用是找出当前系统是否已经存在指定进程的实例,如果没有则创建一个互斥体。//VC声明HANDLE CreateMutex(LPSECURITY_ATTRIBUTESlpMutexAttributes, // 指向安全属性的指针BOOLbInitialOwner, // 初始化互斥对象的所有者LPCTSTRlpName // 指向互斥对象名的指针);一个应用:HANDLE hMutex;hMutex = CreateMutex(NULL ,FALSE ,"myMutex");::WaitForSingleObject(hMut
阅读全文
摘要:对共享内存的学习整理:创建共享内存分以下几个步骤: 1.定义共享内存的结构体; 2.利用CreateFileMapping函数创建共享内存; 3.定义指向共享内存结构体的指针pShareMem,利用MapViewOfFile函数将刚刚创建的内存映射到定义指针pShareMem。读写共享内存分以下几个步骤: 1.定义共享内存的结构体; 2.用OpenFileMapping函数打开上面创建的共享内存区,该函数返回共享内存的地址; 3.将共享内存映射为文件指针; 4.定义指向共享内存结构体的指针,将共享内存的内容拷贝到结构体指针里。#include <afx...
阅读全文
摘要:C语言格式化输出表格:符号属性长度属性基本型所占位数取值范围输入符举例输出符举例----char8-2^7 ~ 2^7-1%c%c、%d、%usigned--char8-2^7 ~ 2^7-1%c%c、%d、%uunsigned--char80 ~ 2^8-1%c%c、%d、%u[signed]short[int]16-2^15 ~ 2^15-1%hd%hdunsignedshort[int]160 ~ 2^16-1%hu%hu 、%ho、%hx[signed]--int32-2^31 ~ 2^31-1%d%dunsigned--[int]320 ~ 2^32-1%u%u 、%o、%x[sig
阅读全文

浙公网安备 33010602011771号