c++
文章平均质量分 60
cary516843761
这个作者很懒,什么都没留下…
展开
-
编码转换的方法(UNICODE/ASCII/UTF-8)
参考了网上一些方法:所谓的短字符,就是用8bit来表示的字符,典型的应用是ASCII码. 而宽字符,顾名思义,就是用16bit表示的字符,典型的有UNICODE. 常用的代码页有CP_ACP和CP_UTF8两个。 使用CP_ACP代码页就实现了ANSI与Unicode之间的转换。 使用CP_UTF8代码页就实现了UTF-8与Unicode之间的转换。 1. AS转载 2016-01-25 15:05:15 · 3246 阅读 · 0 评论 -
C++中的_access函数
今天读代码看到一个access函数,当时没明白怎么回事。man了一下才知道该函数主要用于文件读取方面——判断文件是否存在,并判断文件是否可写。Linux下,该函数为access,位于头文件中,而在标准C++中,该函数为_access,位于头文件中,两者的使用方法基本相同,只是在一些参数方面可能会有一些不同的宏定义。下面是标准C++为例做一下总结:头文件:函数原型:int _access(c转载 2016-01-26 13:50:13 · 40064 阅读 · 0 评论 -
C++栈和队列
使用标准库的栈和队列时,先包含相关的头文件#include#include定义栈如下:stack stk;定义队列如下:queue q;栈提供了如下的操作[cpp] view plain copys.empty() 如果栈为空返回true,否则返回false s.size()转载 2016-01-26 13:51:26 · 259 阅读 · 0 评论 -
操作注册表的API函数介绍(RegCreateKeyEx:该函数用来创建注册表键,如果该键已经存在,则打开它)
RegCreateKeyEx该函数用来创建注册表键,如果该键已经存在,则打开它(注册表键不区分大小写)LONG RegCreateKeyEx( HKEY hKey, LPCTSTR lpSubKey, DWORD Reserved, LPTSTR lpClass, DWORD dwOptions, REGSAM samDesired, LPSECU转载 2016-01-26 19:01:04 · 773 阅读 · 0 评论 -
C++编写Windows服务
使用C++ 编写Windows 服务,我所看的文章如下(红色的"=" 以内, 来自http://www.programfan.com/article/2920.html ):==============前一段时间我写了一篇通过写服务的形式来达到一些监视程序运行的目的的 文章 ,至于如何在windows 下写服务我没有详细介绍,今天就让 我们 一起看看如何来写服务程序。 Win转载 2016-01-26 19:03:22 · 577 阅读 · 0 评论 -
MFC主要知识点
WIN321. WM_COMMAND是由菜单,加速键,工具栏按钮,按钮发出;wParam包含ID,lParam包含句柄; 2 LOWORD()就是取低字节的,将DWORD转成WORD;3 消息处理函数返回TRUE,表示你处理过的;return FALSE为系统帮你做;4 标准客户区绘图,一定要在WM_PAINT中进行才能执行:客户区分为背景和前景 ST转载 2016-01-26 19:51:00 · 1906 阅读 · 0 评论 -
Windows Mobile 常用键值(VK)对应表
#define VK_TSOFT1 VK_F1 // Softkey 1#define VK_TSOFT2 VK_F2 // Softkey 2#define VK_TTALK VK_F3 // Talk #define VK_TEND VK_F4转载 2016-01-26 19:52:21 · 1738 阅读 · 0 评论 -
在MFC下如何定义全局变量和全局函数
初学MFC的注意了,这是一篇很好的文章,以前在网上看到的,觉得很好就保存了下来,现在分享给大家:(由于出处找不到,暂标为原创) 用MFC制作的工程由很多文件构成,它不能象一般C++程序那样随意在类外定义全局变量,在这里要想定义能被工程内多个文件共享的全局变量和函数必须用一些特殊方法才行。实际上有多种方法可以实现,这里只介绍两种方法。一、在应用程序类中定义 用MFC生成的工转载 2016-01-26 19:57:06 · 579 阅读 · 0 评论 -
在函数前面加上WINAPI、CALLBACK
一直搞不懂为什么在函数前面加上WINAPI、CALLBACK等是什么意思 又不是返回值 为什么加在前面 今天终于知道了这是一个呼叫声明(姑且称之吧)。引子:看看这个函数:int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int sw){ MSG msg; //进行程序转载 2016-01-26 19:59:06 · 9782 阅读 · 2 评论 -
正则表达式30分钟入门教程
目录跳过目录本文目标如何使用本教程正则表达式到底是什么东西?入门测试正则表达式元字符字符转义重复字符类分枝条件反义分组后向引用零宽断言负向零宽断言注释贪婪与懒惰处理选项平衡组/递归匹配还有些什么东西没提到联系作者网上的资源及本文参考文献更新纪录本文目标30分钟内让你明白正则表达式是什么,并对它有一些基本的了解,让你可以在自己的程序或网页里使用它。如何使用本教程最重要的是转载 2016-01-26 20:00:09 · 201 阅读 · 0 评论 -
用Sleep或WaitForSingleObject实现线程的休眠
Sleep函数可以实现这个功能: Sleep( DWORD dwMilliseconds ); 其中dwMillisenconds为要休眠的毫秒数,当dwMillisenconds为0时,CPU将把时间切片转给优先级较高的进程。 但Sleep函数有个不好的地方,你不能让它在中途停下来,如果我们要让蜘蛛在两个链接点之间的休眠10秒(10000毫秒)或者更长,而期间又想控转载 2016-01-26 20:02:29 · 1901 阅读 · 0 评论 -
string::rfind
该函数返回目标字符串(key)在源字符串中最后一次匹配的位置 如果没有找到匹配的位置则返回string::npos,是一个无符号整形数字,可以打印看看 12345678910111213141516171819转载 2016-01-26 20:03:32 · 339 阅读 · 0 评论 -
memset_memcpy使用
memset需要的头文件在C中 在C++中 函数介绍void *memset(void *s, int ch, size_t n);函数解释:将 s 中前 n 个字节 (typedef unsigned int size_t)用 ch 替换并返回 s 。memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法[1]。转载 2016-01-26 20:04:27 · 325 阅读 · 0 评论 -
HANDLE,HMODULE,HINSTANCE,HWND概念
HINSTANCE的本质是模块基地址,他仅仅在同一进程中才有意义,跨进程的HINSTANCE是没有意义的你把HINSTANCE的值打印出来看看就知道了HINSTANCE和HWND是没有关系的HWND是线程相关的,你可以通过HWND找到该窗口所属进程和线程Handle 是代表系统的内核对象,如文件句柄,线程句柄,进程句柄。HMODULE 是代表应用程序载入的模块,win32系统下转载 2016-01-26 20:05:17 · 567 阅读 · 0 评论 -
MFC画图
使用原始代码:CBitmap bitmap;HBITMAP hBitmap; //加载图片资源hBitmap = (HBITMAP)::LoadImage(NULL, TEXT("xx.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTIO转载 2016-01-26 20:06:54 · 446 阅读 · 0 评论 -
CWnd与HWND的区别与转换
一、区别HWND是句柄,CWnd是MFC窗体类,CWnd中包含HWND句柄成员对象是m_hWnd.HWND是Windows系统中对所有窗口的一种标识,即窗口句柄。这是一个SDK概念。 CWnd是MFC类库中所有窗口类的基类。微软在MFC中将所有窗口的通用操作都封装到了这个类中,如:ShowWindow等等,同时它也封装了窗口句柄即m_hWnd成员。二、如何得到窗口对象指针CWn转载 2016-01-26 20:09:53 · 221 阅读 · 0 评论 -
C++ Socket编程步骤
sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW);基于TCP的socket编程是采用的流式套接字。服务器端编程的步骤:1:加载套接字库,创建套接字(WSAStartup()/socket());2:绑定套接字到一个IP地址和一个端口上(bind());3:将套接字设置为监听模式转载 2016-01-26 20:11:15 · 282 阅读 · 0 评论 -
TCP/IP、Http、Socket的区别
网络由下往上分为 物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。 通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层, 三者从本质上来说没有可比性, socket则是对TCP/IP协议的封装和应用(程序员层面上)。 也可以说,TPC/IP协议是传输层协议,主要解决数据如何在网络中传输, 而HTTP是应用层转载 2016-01-26 20:12:37 · 218 阅读 · 0 评论 -
所学知识
1.HWND hMainWnd = ::FindWindow(NULL, _T("购阿购数据桥接器")); //找到句柄,0是隐藏,1是显示::ShowWindow(hMainWnd,0);::ShowWindow(hMainWnd,1);2.copydatestruct cpd;赋值::SendMessage(g_hMainWnd, WM_C原创 2016-01-26 20:14:46 · 818 阅读 · 0 评论 -
C++ 智能指针详解
C++ 智能指针详解 一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_p转载 2016-01-31 16:57:18 · 218 阅读 · 0 评论 -
Visual C++内存泄露检测—VLD工具使用说明
一. VLD工具概述Visual Leak Detector(VLD)是一款用于Visual C++的免费的内存泄露检测工具。他的特点有:可以得到内存泄漏点的调用堆栈,如果可以的话,还可以得到其所在文件及行号; 可以得到泄露内存的完整数据;可以设置内存泄露报告的级别;并且是开源免费的。 二. VLD下载http://www.codeproje转载 2016-01-31 16:59:30 · 266 阅读 · 0 评论 -
void与void*详解
void关键字的使用规则: 1. 如果函数没有返回值,那么应声明为void类型; 2. 如果函数无参数,那么应声明其参数为void; 3. 如果函数的参数可以是任意类型指针,那么应声明其参数为void * ; 4. void不能代表一个真实的变量;void体现了转载 2016-01-31 17:49:22 · 659 阅读 · 0 评论 -
创建线程函数区别CreateThraed/_beginthreadex/AfxBeginThread(重点理解)
(1)CreateThread函数CreateThread:是Windows的API函数(SDK函数的标准形式,直截了当的创建方式,任何场合都可以使用),提供操作系统级别的创建线程的操作,且仅限于工作者线程。不调用MFC和RTL的函数时,可以用CreateThread,其它情况不要使用。因为:C Runtime中需要对多线程进行纪录和初始化,以保证C函数库工作正常。MFC也需要知道新线转载 2016-03-30 18:41:29 · 518 阅读 · 1 评论 -
C++ pair(对组)用法
类模板:template struct pair参数:T1是第一个值的数据类型,T2是第二个值的数据类型。功能:pair将一对值组合成一个值,这一对值可以具有不同的数据类型(T1和T2),两个值可以分别用pair的两个公有函数first和second访问。具体用法:1.定义(构造):1 pairint, double> p1; //使用默认构造函数2转载 2016-03-31 10:11:30 · 580 阅读 · 0 评论 -
网络开发:在Socket中发送大文件
在使用Socket进行网络编程的时候,一般都需要考虑一个包大小的问题。目前我们用得最大的情况是,每个包的大小为4KB(4096),但是,如果我们发送的数据要超过这个限制(这很常见),那么应该怎么办呢?Socket本身并不提供对于这种情况的实现,一般我们需要自己拆包和组装。我下面写了一个例子下面是发送一个文件的演示服务端:TcpListener server = null; p转载 2016-03-31 19:04:22 · 481 阅读 · 0 评论 -
虚函数和纯虚函数的作用与区别
虚函数为了重载和多态的需要,在基类中是有定义的,即便定义是空,所以子类中可以重写也可以不写基类中的此函数!纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的接口函数!虚函数引入原因:为了方便使用多态特性,我们常常需要在基类中定义虚函数。class Cman{public:virtual void Eat(){……};void Move();pr转载 2016-03-20 13:57:43 · 1422 阅读 · 0 评论 -
互斥量与临界区等等等...
不管是辅助线程还是用户接口线程,在存取共享资源时,都需要保护共享资源,以免引起冲突,造成错误。处理方法类似于Win32 API函数的使用,但MFC为我们提供了几个同步对象C++类,即CSyncObject、CMutex、CSemaphore、CEvent、CCriticalSection。这里,CSyncObject为其它四个类的基类,后四个类分别对应前面所讲的四个Win32 API同步对象。转载 2016-03-21 09:37:09 · 224 阅读 · 0 评论 -
轻量级数据交换格式 JSON for C++
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。本质上来说,它和XML, YAML等格式化的数据格式没有什么区别,都易于人的阅读和编写,同时也易于机器解析和生成。它基于JavaScript Programming Language,Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完转载 2016-03-21 09:39:12 · 544 阅读 · 0 评论 -
C语言字符串操作总结大全(超详细)
1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串 strlen(p) 取字符串长度 strcmp(p, p1) 比较字符串 strcasecmp忽略大小写比较字符串strncmp(p, p1, n) 比较指定长转载 2016-02-24 12:01:40 · 640 阅读 · 0 评论 -
CFile 与 CStdioFile的区别
一. CFile类操作文件默认的是Binary模式,CStdioFile类操作文件默认的是Text模式。 在Binary模式下我们必须输入'\r\n',才能起到回车换行的效果,'\r'只是回车(回到当前行的第一列),'\n'只是换行(到达下一行的当前列)。 而在Text模式下'\r'的工作是自动完成的,当我们写一个'\n'的时候,系统会自动帮我们在其前面加上一个'\r',然后保存转载 2016-04-01 17:10:19 · 357 阅读 · 0 评论 -
C++文件流读写详解(ofstream,ifstream,fstream)
在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结:这里主要是讨论fstream的内容:[java] view plain copy print?#include ofstream //文件写操作 内存写入存储设备转载 2016-04-01 17:28:36 · 4396 阅读 · 0 评论 -
CString 百度百科
CString位于头文件afx.h中。这篇文章就来讨论这些技巧。使用CString可以让你对字符串的操作更加直截了当。这篇文章不是CString的完全手册,但囊括了大部分常见基本问题。这篇文章包括以下内容:CString 对象的连接格式化字符串(包括 int 型转化为 CString)CString类的成员函数CString 型转化成 int 型CString 型和转载 2016-03-11 17:51:55 · 411 阅读 · 0 评论 -
sizeof strlen wcslen tcslen 比较
sizeof strlen wcslen tcslen 都是取得字符串长度。 sizeof :取得字符串的字节长度,包含 '/0'。strlen:取得多字节字符串中字符长度,不包含 '/0'。wcslen:取得宽字节字符串中字符长度,不包含 '/0'。tcslen:取得宽字节/多字节字符串中字符长度,不包含 '/0'。 例如: WCHAR wcsStr[] = L转载 2016-03-11 19:50:37 · 240 阅读 · 0 评论 -
exe中用new一块内存,但是在dll程序中delete引发的错误
由于给类加了些东西结果,出现了大问题: 析构函数调用完后出错, 百思不得其解, 最后想到这个问题, 搜索了一下:以下文字引用自 http://hi.baidu.com/huhe/blog/item/0b422edd1f1563d98c1029a3.html很感谢作者的分析一个模块一个堆,一个线程一个栈。dll里malloc的内存,在exe里free会出错。CRT(C运行时期库)转载 2016-04-06 17:48:07 · 787 阅读 · 0 评论 -
vector
在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结。1 基本操作(1)头文件#include.(2)创建vector对象,vector vec;(3)尾部插入数字:vec.push_back(a);(4)使用下标访问元素,cout(5)使用迭代器访问元素.vectorint>::iterator it;for(it=vec.begin(转载 2016-03-14 17:20:22 · 234 阅读 · 0 评论 -
C++发送消息格式为JSON的http请求
JSON是类似于xml的一种用于信息交互的轻量级信息定义格式,可扩展性也很好。如何用C++写的代码来发送http请求,消息格式采用JSON呢?下面我一步一步介绍。所有步骤都经实际验证,测试平台为linux系统。 1. 发送http请求需要安装curl库。这个库一般linux系统是自带的。自己可以在系统目录查看下即可。 2. 需要构造和解析json格式的消息要用到jsoncp转载 2016-04-15 17:42:16 · 1838 阅读 · 0 评论 -
MFC RadioButton用法
分组的原则是:1、首先将RadioButton控件定好Tab顺序,具体方法:工具栏“格式”—>“Tab键顺序”选项选中,然后按照预定的顺序依次点击对话框上面的RadioButton按钮,Tab键顺序设定完成。2、按照上面的Tab键顺序进行分组,然后设定每组第一个RadioButton的Group属性为TRUE,分组完成,即从当前设置Group属性为TRUE的RadioButton开始直到碰转载 2016-05-24 10:08:57 · 644 阅读 · 0 评论 -
CTabCtrl的使用
CTabCtrl1.先建立一个MFC应用程序,然后在资源管理器中新建一对话框,并为它建立对应的类,然后从工具箱里面把Tab Control控件放入该对话框中。再在对话框类中,声明一个CTabCtrl变量:CTabCtrl m_tab;变量m_tab用来与对话框中的Tab Control控件交互,为此要在DoDataExchange函数中加入DDX_Control语句:DDX_C转载 2016-05-24 15:16:56 · 1460 阅读 · 0 评论 -
用C++进行简单的文件I/O操作
序论 我曾发表过文件输入输出的文章,现在觉得有必要再写一点。文件 I/O 在C++中比烤蛋糕简单多了。 在这篇文章里,我会详细解释ASCII和二进制文件的输入输出的每个细节,值得注意的是,所有这些都是用C++完成的。一、ASCII 输出 为了使用下面的方法, 你必须包含头文件(译者注:在标准C++中,已经使用取代,所有的C++标准头文件都是无后缀的。VC++6.0必须带后缀)。这是转载 2016-05-11 14:58:05 · 310 阅读 · 0 评论 -
DLL的灾难 --- DEBUG与RELEASE版本不能交叉调用
转载自:http://hi.baidu.com/idealsoft/blog/item/f7bdd7d7e8ac19d8a044df7f.html让我们先看一段引文,再来进行心灵的探索:If you have an EXE and a DLL.When your exe APP was built Debug Mode, your Dll must be Debug mod转载 2016-05-12 16:49:13 · 9259 阅读 · 1 评论