![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
cll131421
这个作者很懒,什么都没留下…
展开
-
IOCP模型与网络编程
IOCP模型与网络编程一。前言: 在老师分配任务(“尝试利用IOCP模型写出服务端和客户端的代码”)给我时,脑子一片空白,并不知道什么是IOCP模型,会不会是像软件设计模式里面的工厂模式,装饰模式之类的那些呢?嘿嘿,不过好像是一个挺好玩的东西,挺好奇是什么东西来的,又是一个新知识啦~于是,开始去寻找一大堆的资料,为这个了解做准备,只是呢,有时还是想去找一本书去系统地学习一转载 2014-10-27 09:31:27 · 583 阅读 · 0 评论 -
setsockopt 设置socket 详细用法
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,转载 2014-09-23 10:58:49 · 524 阅读 · 0 评论 -
创建无边框的CFrameWnd
CFrameWnd _pFrameWnd=new CFrameWnd();_pFrameWnd->Create(NULL,NULL);/*去掉标题栏*/_pFrameWnd->ModifyStyle(WS_TILEDWINDOW,0,SWP_DRAWFRAME);/*去掉凹下的边框*/_pFrameWnd->ModifyStyleEx(WS_EX_CLIENTEDGE转载 2014-09-22 09:49:07 · 1355 阅读 · 1 评论 -
关于C++ const 的全面总结
C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助。Const是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。 一、Const作用 如下表所示:No.作用说转载 2013-12-16 16:26:29 · 440 阅读 · 0 评论 -
如何提高VS2010的性能,VS2010不再卡
教大家几个技巧可以稍微让你觉得它没那么卡!!一、VS2010选项视觉体验设置 工具->选项->环境 视觉体验的勾选都去掉。不解释,你懂得。(不过还是建议打开硬件加速)二、禁用Intellisense 工具->选项->文本编辑器->C/C++->高级 禁用IntelliSense设为True 这个功能很好用。相较于Visual Assist X,Intellisence结转载 2013-11-11 17:48:11 · 4456 阅读 · 1 评论 -
忠告:不要在愚蠢时间写代码
摘要:你是否有过不分情况熬夜写代码的经历?但这种做法是否是一种最佳选择呢?本文作者为著名博客Rachelbythebay的博主,工具Protolog和C++ Depot Build Tool作者,著有《The Bozo Loop》。他将奉献自己的忠告。 英文原文:Avoiding "the stupid hour" 时不时地,总会听到、看到一些团队频繁熬夜加班,甚至觉得这很转载 2013-06-17 17:52:42 · 571 阅读 · 0 评论 -
代码里的命名规则:错误的和正确的对比
英文原文:Express names in code: Bad vs Clean 编程初学者总是把大量的时间用在学习编程语言、语法、技巧和编程工具的使用上。他们认为,如果掌握了这些技术技巧,他们就能成为不错的程序员。然而,计算机编程的目的并不是关于精通这些技术、工具的,它是关于针对特定领域里的特定问题创造出相应的解决方案,程序员通过相互合作来实现这些。所以,很重要的一点,你需要能精确的用代码转载 2013-06-17 15:01:18 · 579 阅读 · 0 评论 -
解决error C2011: 'fd_set' : 'struct' type redefinition的方法
首先说明这个问题由于重复定义引起的编译错误。先说明解决方法,然后再说是什么原因导致了这个问题。 解决方法:下列任何一种方法都可以。1. 在所有包含windows.h的代码之前加上#define WIN32_LEAN_AND_MEAN2. 或者直接在工程的properties( vc6 以上)/Setting(vc6) -> c/c++ -> preprocesso转载 2013-04-24 16:39:58 · 798 阅读 · 0 评论 -
如何在应用程序中映射网络驱动器
---- 我们知道在WINDOWS的平台上可以实现网络驱动器的映射,但在应用程序中如何映 射呢?以下的这个小程序就是演示如何在用户的应用程序中映射网络驱动器。在这里主 要用到了WINDOWS的两个API函数WNetAddConnection2(建立网络驱动器的映射)和 WNetCancelConnection2(取消网络驱动器的映射)以及一个NETRESOURCE结构(用来设 置网络资源)。---转载 2013-02-17 14:22:38 · 1377 阅读 · 0 评论 -
C++ List的用法
Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢.assign() 给list赋值 back() 返回最后一个元素 begin() 返回指向第一个元素的迭代器 clear() 删除所有元素 empty() 如果list是空的则返回true end() 返回末尾的迭代器 erase() 删除一个元转载 2013-01-16 20:28:12 · 359 阅读 · 0 评论 -
char tchar wchar_t WCHAR LPCTSTR LPCWSTR
1.unicode环境下字符转换问题代码:char szChar[20]; sprintf_s(szChar,"char is %d",wParam); MessageBox(hwnd,szChar,"char_test",0);报错:不能将参数 2 从“char [20]”转换为“LPCWSTR”解决办法:要么 char szChar[20]转载 2013-01-15 15:19:16 · 458 阅读 · 0 评论 -
用C/C++编写window服务
摘要 Windows 服务被设计用于需要在后台运行的应用程序以及实现没有用户交互的任务。为了学习这种控制台应用程序的基础知识,C(不是C++)是最佳选择。本文将建立并实现一个简单的服务程序,其功能是查询系统中可用物理内存数量,然后将结果写入一个文本文件。最后,你可以用所学知识编写自己的 Windows 服务。 当初我写第一个 NT 服务时,我到 MSDN 上找例子。在那里我找到了一转载 2013-01-08 10:27:57 · 2125 阅读 · 1 评论 -
C++中的字符串类型
C++提供了两种字符串的表示C。风格的字符串和标准。 C++引入的string 类类型一般我们建议使用string 类。但实际上在许多程序的情形中我们有必要理解和使用老式的C 风格字符串。在第7 章我们会看到一个例子。它处理命令行选项而这些选项被作为C 风格的字符串数组传递给main()函数1、C风格字符串C 风格的字符串起源于C 语言并在C++中继续得到支持。实际上在标准C+转载 2012-09-16 17:44:15 · 470 阅读 · 0 评论 -
windows socket错误码及出错原因
Windows Sockets在头文件winsock.h中定义了所有的错误码,它们包括以“WSA”打头的Windows Sockets实现返回的错误码和Berkeley Sockets定义的错误码全集。定义Berkeley Sockets错误码是为了确保原有软件的可移植性。A.1 Windows Sockets错误码列表表A.1列出了WSAGetLastError()函数返回的可能转载 2014-09-23 10:59:48 · 8880 阅读 · 0 评论 -
LINUX下编译遇到“archiver requires 'AM_PROG_AR'”
在编译VLC时遇到提示:/usr/share/automake-1.14/am/ltlibrary.am: warning: 'lib/libtiger.la': linking libtool libraries using a non-POSIX/usr/share/automake-1.14/am/ltlibrary.am: archiver requires 'AM_PROG_AR原创 2014-10-16 17:50:58 · 2615 阅读 · 0 评论 -
设计模式学习小结(2.2)——桥接模式
作用:应对当前多种多样的操作系统,程序可能需要多套接口,并随时有可能新增接口。将逻辑和实现分离,使程序可以十分方便的扩展。示例代码:Logic.h#ifndef _LOGIC_H_#define _LOGIC_H_/*****************************************************************************原创 2013-12-27 11:36:59 · 504 阅读 · 0 评论 -
设计模式学习小结(1.1)——工厂模式
一般程序架构分为:图形界面层——逻辑控制层——基础功能层作用:延迟子类实例化,一般用于逻辑控制层中。示例代码:#include #include using namespace std;class CarBMW;class CarBENZ;//以下相当于基础功能层class VirtualCar{public: virtual原创 2013-12-27 10:57:19 · 554 阅读 · 0 评论 -
设计模式学习小结(3.6)——中介者模式
作用:两个类之间存在频繁的交互,为了将低两个类之间的耦合,将两个类之间的交互封装至中介者类中。示例代码:暂无。原创 2013-12-27 17:04:50 · 452 阅读 · 0 评论 -
设计模式学习小结(3.3)——状态模式
作用:对象内部分多种状态,并且在各种状态下可以互相切换。例子:汽车,可以在停止、启动、运行之间切换。示例代码:CarState.h#ifndef _CAR_STATE_H_#define _CAR_STATE_H_class CarContext;class CarState{public: virtual ~CarState(void);原创 2013-12-27 15:40:16 · 513 阅读 · 0 评论 -
c++如何判断文件目录是否存在,不存在则创建
#include #include #include #include //检查文件夹是否存在,不存在则创建之//文件夹存在返回 0//文件夹创建失败返回-1//文件夹创建失败返回1int CheckDir(char* Dir){ FILE *fp = NULL; char TempDir[200]; memset(TempDir,'\0',size原创 2012-10-06 15:13:13 · 18164 阅读 · 2 评论 -
C++ map的使用
Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map最基本的构造函数; mapmapstring; mapmapint; mapmapstring; mapmapchar; mapmapchar; mapmapint转载 2012-10-05 18:45:32 · 556 阅读 · 0 评论 -
CString/C++ string常用操作详解
之 所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。 好了,进入正题………首先,为了在我们的程序中转载 2012-08-04 15:49:31 · 603 阅读 · 0 评论 -
实用SQL语句大全(上)
一、基础1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwi转载 2012-07-19 09:26:56 · 375 阅读 · 0 评论 -
浅谈C中的malloc和free
在C语言的学习中,对内存管理这部分的知识掌握尤其重要!之前对C中的malloc()和free()两个函数的了解甚少,只知道大概该怎么用——就是malloc然后free就一切OK了。当然现在对这两个函数的体会也不见得多,不过对于本文章第三部分的内容倒是有了转折性的认识,所以写下这篇文章作为一个对知识的总结。这篇文章之所以命名中有个“浅谈”的字眼,也就是这个意思了!希望对大家有一点帮助!转载 2012-07-14 16:01:55 · 505 阅读 · 0 评论 -
error C2054:在“inline”之后应输入“(”(
error C2054:在“inline”之后应输入“(” 按照编译错误的提示来看应该是编译器没有识别inline参数。查阅了一下inline是c++里面的东西,在c里面使用是会发生错误。 解决办法就是将inline修改为__inline或者在mapserver.h中增加了如下的定义: #defineinline __inline转载 2012-07-14 14:17:57 · 1193 阅读 · 0 评论 -
C++引用参数和引用返回值
引用参数从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量)。在C++ 中,指针和引用经常用于函数的参数传递,然而,指针传转载 2012-07-16 09:03:23 · 1732 阅读 · 0 评论 -
C语言运算符优先级 详细列表
优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右 ()圆括号(表达式)/函数名(形参表) .成员选择(对象)对象.成员名转载 2012-07-14 18:26:09 · 368 阅读 · 0 评论 -
printf中输出double的占位符
今天A了一道POJ2253,wa了好久,后来看了discuss才知道printf中输出double是应该用%f 而不是%lf的.只是大多数编译器都会识别而已,而也就造成了我们长期都不知道正确的写法.这儿有一篇文章,有点帮助:转自:http://book.51cto.com/art/200901/106880.htm12.9问:有人告诉我不能在printf中使用%lf。为什么printf转载 2012-07-14 11:38:49 · 2062 阅读 · 3 评论 -
C++回调函数的一些经验
首先搞明白一个问题,什么是回调函数?相信大家肯定在网上看了很多相关的资料,我承认我当初是看了不少,不过看完感觉迷迷糊糊的,没有一个直观的认识。现在我来总结一下:被函数调用的函数就是回调函数。比如函数A调用了函数B,那么B就是回调函数。下面给大家一个最简单的例子:#include #include int getSum(int a ,int b){ return原创 2012-07-11 19:09:41 · 609 阅读 · 1 评论 -
自定义回调函数原型的方法
回调函数是不能显式调用的函数;通过将回调函数的地址传给调用者从而实现调用。 回调函数使用是必要的,在我们想通过一个统一接口实现不同的内容,这时用回掉函数非常合适。比如,我们为几个不同的设备分别写了不同的显示函数:void TVshow(); void ComputerShow(); void NoteBookShow()...等等。这是我们想用一个统一的显示函数,我们这时就可以用回掉函数转载 2012-07-11 18:24:58 · 428 阅读 · 0 评论 -
C++回调函数(callback)的使用
什么是回调函数(callback) 模块A有一个函数foo,他向模块B传递foo的地址,然后在B里面发生某种事件(event)时,通过从A里面传递过来的foo的地址调用foo,通知A发生了什么事情,让A作出相应反应。那么我们就把foo称为回调函数。 例子: 回调函数是个很有用,也很重要的概念。当发生某种事件时,系统或其他函数将会自动调用您定义的一段函数。回调函数转载 2012-07-11 16:36:35 · 1349 阅读 · 0 评论 -
怎样使用C++回调函数
程序员常常需要实现回调。本文将讨论函数指针的基本原则并说明如何使用函数指针实现回调。注意这里针对的是普通的函数,不包括完全依赖于不同语法和语义规则的类成员函数(类成员指针将在另文中讨论)。声明函数指针 回调函数是一个程序员不能显式调用的函数;通过将回调函数的地址传给调用者从而实现调用。要实现回调,必须首先定义函数指针。尽管定义的语法有点不可思议,但如果你熟悉函数声明的一般方法转载 2012-07-11 16:31:24 · 417 阅读 · 0 评论 -
如何实现类的成员函数作为回调函数
回调函数(Callback function)大量用于Windows的系统服务,通过它,程序员可以安装设备驱动程序和消息过滤系统,以控制Windows的有效使用。许多程序员都发现,利用MFC或者其它的C++应用编写回调函数是非常麻烦的,其根本原因是回调函数是基于C编程的Windows SDK的技术,不是针对C++的,程序员可以将一个C函数直接作为回调函数,但是如果试图直接使用C++的成员函转载 2012-07-11 16:37:07 · 374 阅读 · 0 评论 -
C/C++基本数据类型长度
熟知基本数据类型是我们正确表达实际问题中各种数据的前提,因此我分类总结了一下C/C++/Windows /C#基本数据类型,以便日后查阅。 ANSI C/C++基本数据类型:TypeSize数值范围无值型void0 byte无值域布尔型bool 1转载 2012-07-06 11:48:45 · 2980 阅读 · 0 评论 -
如何在VC++环境下运行命令行参数
大家都知道,形如int main(int argc, char** argv){}类型的控制台程序,都需要在命令行模式下,输入相应的参数才可以正确运行,不过每次都运行--cmd--cd 路径--可执行文件--参数,这个过程十分麻烦,并且对调试十分不利。现在我给大家介绍一种可以直接在vc++环境下运行这种程序的方法:项目--属性--配置属性--调试--命令行参数,在命令参数下输入原创 2012-07-07 10:34:06 · 524 阅读 · 0 评论 -
STL vector用法介绍
介绍这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作。本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用。通过阅读这篇文章读者应该能够有效地使用vector容器,而且应该不会再去使用C类型的动态数组了。 Vector总览vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种转载 2012-08-05 15:45:23 · 366 阅读 · 0 评论 -
c++中如何把int转化为string
#include #include using namespace std;int main(){ int n = 65535; char t[256]; string s; sprintf(t, "%d", n); s = t; cout << s << endl; return 0;}原创 2012-08-08 09:44:24 · 517 阅读 · 0 评论 -
window下获取指定目录下面的所有文件名 c/c++
#include #include #include using namespace std;void main(int argc, char **argv){ _finddata_t file; long longf; //_findfirst返回的是long型; long __cdecl _findfirst(const char *, struct _转载 2012-09-14 14:46:03 · 865 阅读 · 0 评论 -
学习C++进阶必读书目
(红色为必读书目)1. C++语言的设计和演化首先肯定要读一读Bjarne Stroustrup的The Design and Evolution of C++,了解一下这个语言的历史。接下来就可以看别的书了,但要不停地回头看这本书,看到你不断地学到的新技术是怎么样一点点地被接纳到这个语言中去的。2. Essential C++中文版和C++Primer(同转载 2012-10-04 08:50:29 · 1375 阅读 · 0 评论 -
30分钟掌握STL
这是书原名是《using stl》,不知道是谁写的。不过我倒觉得很有趣,所以化了两个晚上把它翻译出来。我没有对翻译出来的内容校验过。如果你没法在三十分钟内觉得有所收获,那么赶紧扔了它。文中我省略了很多东西。心疼那,浪费我两个晚上。STL概述STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种分离确实使得STL变得非常通用。例如,由于STL的sort()函数是完全通用转载 2012-09-13 13:43:01 · 452 阅读 · 0 评论