
C/C++
思重'技术博客
世界如此的美好,江山如此的多娇!
展开
-
快速高效读C代码和读C++代码
首先声明,是读大量代码适用。刚开始读几万行代码,没头绪,没文档,没说明,没注释;只有一个简单的功能框架,读得让人头痛。但是工作需要必须读。C代码:(如果要掌握代码,达到能改动能力,一定不要先看主函数)主要是依据源码的标题,先大致看一下会实现些什么功能。再依据功能最好能自己连读边写个文档记录。做了这个心里对代码有了大致的了解,再细读各个函数,把几个接口函数和全局变记录下来。最原创 2013-07-27 23:44:13 · 1031 阅读 · 0 评论 -
控件台版/MFC版本的简单生日提醒软件及源码
闲来无事,把很久以前写的控制台程序改编成MFC下的有界面程序。一来为自己学习的提升,二来可以给朋友用用。这个自己写的主要是可靠,无广告纯净绿色版本!重要的是,还可以根据自己的需要改进!比如可以用来做一个记事本或通讯录!下面说一下MFC中的类结构吧:主要是两个类和一个命名空间结构体:1、命名空间里实现阳历到阴历的转换;2、birthday中实现对单个数据的操作;3、bir原创 2013-07-27 23:44:19 · 959 阅读 · 0 评论 -
stl 下字符串匹配与string 相关函数的调用
这周主要做了stl环境下url字符串操作, 用到string 类的很多函数。完成了对url的识别和对银行网址的认定,以防止钓鱼网站的url被误认。。。stl下主要是对容器的使用,vector list ;当然做为C++ 的标准,流和输入与输出是少不了的,也包括文件;最基本的是字符串的操作了,string提供了很多的函数,可以调用。 vector:【例】 vector abc原创 2013-07-27 23:44:40 · 1141 阅读 · 0 评论 -
C/C++编写dll动态链接库使用操作与非基本类型参数声明错误
在VC6.0 下编译通过。。。其它VC平台类似!一、建立 Win32 Dynamic-Link Library 项目【dll.cpp】#include #include #include "dll.h"using namespace std;void add(char* aa){ string bb = aa; cout }【dll.h】 #include原创 2013-07-27 23:44:42 · 1356 阅读 · 0 评论 -
ubuntu linux mysql 开发模式与连接编译
【源码 测试】#include #include #include int main(void){ MYSQL_RES *result; MYSQL_ROW row; MYSQL *connection, mysql; int state; mysql_init(&mysql); connection = mysql_real_connect(&my原创 2013-07-27 23:44:51 · 571 阅读 · 0 评论 -
用C查看系统任务管理器中运行的程序
#include #include #include void main(void){ PROCESSENTRY32 pe32; pe32.dwSize = sizeof(pe32); HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0)原创 2013-07-27 23:44:58 · 2146 阅读 · 0 评论 -
回调函数编写和注重点
#include #include typedef void (__stdcall *connectcallback)(char* msg);void __stdcall testcallback(char* msg){ if(!strcmp(msg,"successful")) { printf("already conneted\n原创 2013-07-27 23:45:00 · 821 阅读 · 0 评论 -
创建一个进程和两个管道,实现与进程通信
// createprocess_.cpp : 定义控制台应用程序的入口点。//#include #include #include #include #include #include #include int main(int argc, char* argv[]){//Main_t: char commanline[40];原创 2013-07-27 23:45:03 · 1092 阅读 · 0 评论 -
打开一个网页,以html代码保存于txt文件中
#include string> #include #include #include #include #include #include #include #pragma comment(lib,"wininet.lib") using namespace std; int main() { HINTER原创 2013-07-27 23:45:05 · 1908 阅读 · 0 评论 -
创建设一个开机自动运行的计划任务,并且命名和当前登陆用户名相关
很多时候,有些程序希望它开机自动运行。当然实现的方式有很多种,如:注册表项、开始-程序-启动文件夹、计划任务、系统服务程序等等。 然而,计划任务是一般用户了解最少的一种。并且前两种是很容易修改和通过杀毒软件禁用的。【This code is Task schedul 1.0 for Win XP】整理来自官网示例:http://msdn.microsoft.com/en-us/libra原创 2013-07-27 23:45:34 · 1186 阅读 · 1 评论 -
C++fstream文件流处理对中文字符不支持的解决办法
今天由于要写代码规总,提交文档。由于文件太多一个个复制觉得麻烦,就想着自己写一个程序完成这项任务。 任务目标:就是把指定文件夹里的所有简单文档的内容全部写入到一个文档内!!!【以下内容转自:我住包子山 让VS2005中的fstream支持中文路径文件打开 】 前几天发了这篇《用fstream对二进制文件的读写》,有朋友指出了VS2005的fstream对于中文路径支持不好的bug。原创 2013-07-27 23:46:08 · 1549 阅读 · 0 评论 -
常见两种LINK错误
1. 自己定义的函数或者变量只给出了声明,并没有定义。2. 项目配置没有设定为win标准库或者MFC动态,而是设定为MFC静态库。因此有很多API没有加载定义,只是在默认相关头文件中有声明。所以只要搜索对应函数所在库,并加载到文件里边就可以静态编译了。要查找一个LINK错误,一般到MSDN去搜索相关函数或者变量,MSDN会提供相关的库说明。比如:使用到RegOpenKeyEx函数打开读取注原创 2013-07-27 23:45:11 · 2788 阅读 · 0 评论 -
牛人的牛逼代码分析之VA_LIST
_INTSIZEOF 宏作用:获取类型占用的空间长度,最小占用长度为int的整数倍#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )验证的就是这个式子:(x+a-1)&~(a-1) ?= n*asizeof结果是一个size_t,其一般定义是:typedef unsigne原创 2013-07-27 23:45:43 · 907 阅读 · 0 评论 -
MFC网页访问的实现示例
使用MFC对话框,实现对http数据的访问。示例使用了CInternetSession建立连接,使用CHttpFile读取内容!实现需要包含头文件:afxinet.h原创 2013-08-19 17:46:53 · 2072 阅读 · 0 评论 -
基于泛型类模块,使类成员函数作为回调函数
1. FuncCache 此类用于存放,类和函数信息。关键在于对函数参数的处理,写得妙。因为,类中类的成员,在使用后自动销毁,可以使得函数可以反复调用。 类成员buffer,相当于一个栈,可用于在放任何数据(如:类指针、函数指针、参数指针)。 类成员func,存放MFuncCall_1的静态成员函数。为什么不把这个静函数直接作为成员函数?因为可以用这个函数作为接口,方便用户自定义!原创 2013-09-05 00:10:28 · 958 阅读 · 0 评论 -
socket 10053 错误之路
最近,一个项目老掉线。。。。WSAGetLastError有大概如下几种:10053 50%、10054 30%、10055 10%、else %10。还有没有记录的掉线信息。10053 - 查到的原因:服务端关闭了socket,而客户端还在发送数据、and 没查出来的原因。10054 - 网络原因:上行网络拥堵、或者任何一向发送RST消息。10055 - 系统so原创 2014-01-22 23:13:38 · 8438 阅读 · 1 评论 -
Windows系统极限-程序可使用资源的限制
最近,收到的log消息显示:XP系统的限制明显比WIN7多。很多在WIN7下没有问题的程序在XP下报错了。于是就有了下文......1. WriteFile. Windows Server 2003 and Windows XP: Pipe write operations across a network are limited in size per write. The a原创 2014-04-01 18:43:57 · 2894 阅读 · 0 评论 -
判断是NULL还是“”("")
依据网上所查,C中主要是说:NULL是指针为空而“”是指针不是空,而是指向空内容。而JAVA中是null没有对象,而“”为有对象,但为空对象。所以在判断的时候要先判断是否没空,再判断是否没空对象(内容为空)。如:if(object == NULL || object == "") 而不要写成if(object == "" || object == NULL)原创 2013-07-27 23:44:15 · 628 阅读 · 0 评论 -
VS不能设置断点
这几天团队开发,出现一个奇怪的现象。更新代码后,编译调试居然不能够设置断点。编码的人都知道,调试程序不能设置断点是一件多么大的事情!!! 在网上搜了很多,有说这样或那样的。在这里结合自己的经验总结一下。 1. 可以清理解决方案,或删除不必要的文件后,重新编译可以解决问题的。 2. 重新排版(ctrl+A, ctrl+K, ctrl+F),再生成可以解决问题的。 3. 保证头文件和对原创 2013-07-27 23:46:03 · 842 阅读 · 0 评论 -
容器find_if函数定义和其第三个参数重载的疑问
简单明了,这个是cpluscpus 对find_if的定义:123456templateclass InputIterator, class Predicate> InputIterator find_if ( InputIterator first, InputIterator last, Predicate pred ) { for ( ;原创 2013-07-27 23:44:35 · 694 阅读 · 0 评论 -
boost asio io_service 原理及与strand的比较
io_service一般作为处理工作的work pool。网络中,作为服务器接收用,可以加速处理收到的信息。主要有post, dispatch, stop, run. 几可常用方法。通常还会用到boost bind一起使用io_service是并发的,在队列中,有几个run, 就有几个并发进行;而对于strand 是严格顺序进行的调用。看下面的例子:#include #includ原创 2013-07-27 23:44:38 · 1795 阅读 · 0 评论 -
C/C++编写dll动态链接库使用操作与非基本类型参数声明错误(2)
传递vector类型参数~【dll 文件】#include #include #include using namespace std;extern "C" __declspec(dllexport)int show_vector(vector aaa);int show_vector(vector aaa) // 传过来的aaa最好 不要修改、增加、删除里的值{ vector::原创 2013-07-27 23:44:44 · 732 阅读 · 0 评论 -
dll动态链接库之用类写配置文件和调用判断方法接口的实现中遇到的若干问题
【代码加载lib及库中函数声明】#pragma comment(lib,"dll_phishing.lib")extern "C" _declspec(dllexport) int is_phishing(char* url);//char*extern "C" _declspec(dllimport) int read_config(vector white_vector);//char*原创 2013-07-27 23:44:47 · 748 阅读 · 0 评论 -
字符串处理之中英文字符数统计(MFC&GB2312)
void CCharStatisticDlg::OnStatistic() { UpdateData(TRUE); //获得字符串按字节数计算的长度 int Lenth = m_strTxt.GetLength(); int nELenth = 0; //英文字符数 int nCLenth = 0; //中文字符数 int原创 2013-07-27 23:45:48 · 1294 阅读 · 0 评论 -
九宫格数独游戏解法(一)
最近看这东东比较有意思,写了这个程序。这是个比较粗略的解法,对于简单的一两次就解掉了,复杂的可能要多运行几次才比较容易得出结果。这个简单程序最复杂的地方是要把直观上的三种情况得出三个独立的值,然后取交集,尤其是在同一个循环里边实现第三个数组,想了我很久。// NO.game.cpp : 定义控制台应用程序的入口点。//#include #include #include原创 2013-07-27 23:45:50 · 3606 阅读 · 0 评论 -
VS_2008远程调试方法
直入主题:选程调试、DLL、PDB项目符号文件使用、堆栈信息、在线PDB文件连接、VS20081. VS 2008 目录:C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\Remote Debugger下贝整个x86(成功测试xp)目录到运程机器2. 运行程序msvsmon.exe 可能弹出警告框-【确定】,工具-选项3. 如上图原创 2013-07-27 23:45:57 · 1299 阅读 · 0 评论 -
error LNK2019: 无法解析的外部符号
今天由于修改以前的代码,把宏定义成了if-else结构的控制结构。修改完成后一编译,出问题了:error LNK2019: 无法解析的外部符号 编译没有问题,生成时出现问题,但没有给出明确的解释。只说了class中一个回调函数(可能是任何一个函数)无法解释,并说这个函数在哪个地方调用的。但这个函数检查了很久没没看出问题来。后来网上找。。。。link 的问题太多了,五花八门。 不过好像看原创 2013-07-27 23:46:06 · 934 阅读 · 0 评论 -
MFC 界面编程 可参考资料
http://www.codeproject.com/Articles/26887/A-user-draw-button-that-supports-PNG-files-with-trhttp://www.codeproject.com/Articles/27819/Style-Toolkit-Use-advanced-graphics-techniques-tohttp://www.co原创 2013-07-27 23:46:15 · 665 阅读 · 0 评论 -
建立一个不能打开的文件(占坑)---C语言高级API调用
建立一个不能打开的文件。当你看懂这段代码,就是一次质的改变。源自 windows 核心编程 扩展...#include void RaiseToDebugP(){/* GetCurrentProcessID 得到当前进程的ID OpenProcessToken 得到进程的令牌句柄 LookupPrivilegeValue 查询进程的权限原创 2013-07-27 23:44:56 · 762 阅读 · 0 评论 -
字符操作、文件操作和CMD命令的使用——c/c++编
最近有点乱,有点忙~~对于一个用惯了C的程序员来说,不容易习惯C++的编程思想。C中有数组,C++中有string。相对来说数组可以有的操作string都能够实现,对字符的操作不需要在程序中使用strcpy,拷贝到char[]中。而且string更多其它封装好的处理功能,可以使用“.”,类的方法形式操作。C读写文件,一般有两种方式:fopen和open。open比fopen更底层,操作更复原创 2013-07-27 23:45:18 · 972 阅读 · 0 评论 -
char转换成WCHAR简单方法
最简单的方法就是用循环实现。#include #include #include void main (){ char *name = "qiang.zhou"; WCHAR wname[256]; for(int i = 0; i ) { wname[i] = name[i]; }原创 2013-07-27 23:45:32 · 2077 阅读 · 0 评论 -
给小说以章节划分TXT
最近忽然想起《狼图腾》还没看完。。。就一个TXT,感觉太大的每页困难,还有看起来好长,就想要是划分一下,以每个章节作一个txt...C/C++没找到用正则表达式和通配符的函数可以调用,分析章节特征只能这个去匹配了。代码如下:#include#include string>#include using namespace std;void main(void)原创 2013-07-27 23:45:39 · 4764 阅读 · 0 评论 -
GetLastError与SetLastError的使用和注意事项
GetLastError 与 SetLastError#include #include #define ERROR_NOT_SUPPORTED 50Lint func(int m){ if(m == 0 ) //SetLastError(0xe0000001); SetLastError(ER原创 2013-07-27 23:45:54 · 2250 阅读 · 0 评论 -
VS缓冲区溢出,未对变量进行检查
最近写的比较少了。。。 这次遇到这个问题比较棘手,这个问题很奇怪,只在release下有问题,而debug下没有问题,找了好几天没找到问题所在。 结果慢慢的缩小范围,发现只要不调用 一个特定 函数就不会出问题。检查后发现这个函数没有什么问题,事实上这个函数并不是出问题的地方,而是调用它引起的一个消息响应函数的调用,而这个消息响应函数是从人家开发封装好的dll内传出来的。 因此,问题就是这原创 2013-07-27 23:45:59 · 1708 阅读 · 0 评论 -
Mutex与Event控制互斥事件的使用详解
最近写一程序,误用了Mutex的功能,错把Mutex当Event用了。【Mutex】 使用Mutex的主要函数:CreateMutex、ReleaseMutex、OpenMutex、WaitForSingleObject、WaitForMultipleObjects。 CreateMutex:其中第二个参数是表示当前线程拥有权。 TRUE:创建线程获得初始所有权的互斥对象(即原创 2013-07-27 23:46:01 · 1155 阅读 · 0 评论 -
大用户程序开发过程中遇到和解决的一些问题集
对于编程这门精细活,细节往往决定成败。下面是我在开发某个大型网络游戏中遇到的一些现象、问题及解决方法,总结一下,分享给大家~~1. 利用map cod文件精确定位报错位置,前提是,要能提供对应的堆栈信息;次点的方法,知道那个catch到错误后,在try前加一个变量,在try里不同的代码行前修改成不同的值,这样子,在catch里可以把它记录到相应日志,或者提示。2. netstat信息可以通原创 2014-04-24 11:44:43 · 845 阅读 · 0 评论