![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
shmilxu
IT界小小软件工程师
展开
-
C++学习网站
http://www.vckbase.com/ vc知识库 http://www.cjjjs.cn/ C++技术网http://www.enet.com.cn/eschool/video/c++/ eNet网络学院http://www.cnblogs.com/wyqx/archive/2011/07/20/2112068.html c++学习网站大全 http:/原创 2016-03-08 16:44:17 · 375 阅读 · 0 评论 -
STL之四:list用法详解
转载于:http://blog.csdn.net/longshengguoji/article/details/8520891list容器介绍相对于vector容器的连续线性空间,list是一个双向链表,它有一个重要性质:插入操作和删除操作都不会造成原有的list迭代器失效,每次插入或删除一个元素就配置或释放一个元素空间。也就是说,对于任何位置的元素插入或删除,list永远是常数时间。转载 2016-03-08 16:42:03 · 187 阅读 · 0 评论 -
STL之五:set/multiset用法详解
集合转载于:http://blog.csdn.net/longshengguoji/article/details/8546286使用set或multiset之前,必须加入头文件Set、multiset都是集合类,差别在与set中不允许有重复元素,multiset中允许有重复元素。sets和multiset内部以平衡二叉树实现 1. 常用函数1)转载 2016-03-08 16:42:06 · 210 阅读 · 0 评论 -
STL之四:list用法详解
转载于:http://blog.csdn.net/longshengguoji/article/details/8520891list容器介绍相对于vector容器的连续线性空间,list是一个双向链表,它有一个重要性质:插入操作和删除操作都不会造成原有的list迭代器失效,每次插入或删除一个元素就配置或释放一个元素空间。也就是说,对于任何位置的元素插入或删除,list永远是常数时间。转载 2016-03-08 16:42:09 · 241 阅读 · 0 评论 -
STL之五:set/multiset用法详解
集合转载于:http://blog.csdn.net/longshengguoji/article/details/8546286使用set或multiset之前,必须加入头文件Set、multiset都是集合类,差别在与set中不允许有重复元素,multiset中允许有重复元素。sets和multiset内部以平衡二叉树实现 1. 常用函数1)转载 2016-03-08 16:42:11 · 209 阅读 · 0 评论 -
STL之六:map/multimap用法详解
转载于:http://blog.csdn.net/longshengguoji/article/details/8547007map/multimap 使用map/multimap之前要加入头文件#include,map和multimap将key/value当作元素,进行管理。它们可根据key的排序准则自动将元素排序。multimap允许重复元素,map不允许重复元素。 ma转载 2016-03-08 16:42:13 · 219 阅读 · 0 评论 -
STL之七:STL各种容器的使用时机详解
转载于:http://blog.csdn.net/longshengguoji/article/details/8550235C++标准程序库提供了各具特长的不同容器。现在的问题是:该如何选择最佳的容器类别?下表给出了概述。但是其中有些描述可能不一定实际。例如:如果你需呀处理的元素数量很少,可以虎落复杂度,因为线性算法通常对元素本身的处理过程比较快,这种情况下,“显性复杂度搭配快速的元转载 2016-03-08 16:42:16 · 197 阅读 · 0 评论 -
细谈select函数(C语言)
Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻塞方式转载 2016-03-08 16:42:21 · 325 阅读 · 0 评论 -
setsockopt的作用
功能描述: 获取或者设置与某个套接字关联的选 项。选项可能存在于多层协议中,它们总会出现在最上面的套接字层。当操作套接字选项时,选项位于的层和选项的名称必须给出。为了操作套接字层的选项,应该 将层的值指定为SOL_SOCKET。为了操作其它层的选项,控制选项的合适协议号必须给出。例如,为了表示一个选项由TCP协议解析,层应该设定为协议 号TCP。用法:#inc转载 2016-03-08 16:42:18 · 192 阅读 · 0 评论 -
STL之三:deque用法详解
转载于:http://blog.csdn.net/longshengguoji/article/details/8519812deque函数:deque容器为一个给定类型的元素进行线性处理,像向量一样,它能够快速地随机访问任一个元素,并且能够高效地插入和删除容器的尾部元素。但它又与vector不同,deque支持高效插入和删除容器的头部元素,因此也叫做双端队列。deque类常用的函数如下。转载 2016-03-08 16:42:01 · 252 阅读 · 0 评论 -
STL之一:字符串用法详解
转载于:http://blog.csdn.net/longshengguoji/article/details/8539471字符串是程序设计中最复杂的变成内容之一。STL string类提供了强大的功能,使得许多繁琐的编程内容用简单的语句就可完成。string字符串类减少了C语言编程中三种最常见且最具破坏性的错误:超越数组边界;通过违背初始化或被赋以错误值的指针来访问数组元素;以及在释放了某转载 2016-03-08 16:41:59 · 419 阅读 · 0 评论 -
自己的代码风格——代码注释
1、头文件的注释:/****************************** @filename: Utilily.h* @author: xxxx* @version: 1.0* @date: 2011-9-3* @describe: 解析Rmcp指令,将其转化为rmtp(V01.01)* @modification原创 2016-03-08 21:37:13 · 592 阅读 · 0 评论 -
C++之tinyXML的使用详解
tinyXML一款很优秀的操作C++类库,文件不大,但方法很丰富,和apache的Dom4j可以披靡啊!习惯了使用java类库的我看到这么丰富的c++类库,很高兴!它使用很简单,只需要拷贝几个文件到你的工程中,没有STL也可以编译运行。 下面我从这几个方面谈谈对tinyXML类库的使用以及理解。 首先在sourceforge上下载tinyXML类库,地址:http://so转载 2016-03-08 16:41:39 · 447 阅读 · 0 评论 -
TiXmlHandle的使用-简化tinyxml的代码
借鉴于:http://www.cppblog.com/elva/archive/2008/04/24/47907.html例如:1 xml version="1.0" standalone=no>2 3 4 Go to the Toy store!5 Do bills6 想要健壮地读取一个XML文档,检查方法调用后的返回值是否为null是很重要的。一转载 2016-03-08 16:41:42 · 414 阅读 · 0 评论 -
tinyxml源码解析(中)
转载于:http://www.cnblogs.com/marchtea/archive/2012/11/20/2766756.html前言: 之前趁着这段时间比较空闲,也因为听闻tinyxml大名,因此就阅读了tinyxml的源码.在上一篇博文中中对tinyxml整体架构以及其中两个基类TiXmlBase,TiXmlNode进行了注释解析.不过文章写得有点啰嗦,太过详细.因此这篇转载 2016-03-08 16:41:44 · 430 阅读 · 0 评论 -
tinyxml源码解析(上)
转载于:http://www.cnblogs.com/marchtea/archive/2012/11/09/2762669.html前言: 前段时间做功能可行性的时候简单的使用了tinyxml。在sourceforge下载的时候,看到老外对于这个库的评价很高,因此就有冲动进行学习这么一个优秀的框架。简单查看了代码,代码量也不是很大。刚好事情做的差不多,索性就学习学习好了。第一次尝试阅读转载 2016-03-08 16:41:47 · 1014 阅读 · 0 评论 -
STL使用总结
转载于http://blog.csdn.net/daisy_chenting/article/details/68981841. 概述泛型编程思想最早缘于A.Stepanov提出的部分算法可独立于数据结构的论断。20世纪90年代初A.Stepanov和Meng Lee根据泛型编程的理论用C++共同编写了STL。但直至1998年,STL才成为C++的正式标准。在后来的几年中,各大主流编转载 2016-03-08 16:41:52 · 276 阅读 · 0 评论 -
STL之二:vector容器用法详解
转载于:http://blog.csdn.net/longshengguoji/article/details/8507394vector类称作向量类,它实现了动态数组,用于元素数量变化的对象数组。像数组一样,vector类也用从0开始的下标表示元素的位置;但和数组不同的是,当vector对象创建后,数组的元素个数会随着vector对象元素个数的增大和缩小而自动变化。 vector类转载 2016-03-08 16:41:54 · 320 阅读 · 0 评论 -
STL学习系列之一——标准模板库STL介绍
转载于:http://blog.csdn.net/longshengguoji/article/details/8466118库是一系列程序组件的集合,他们可以在不同的程序中重复使用。C++语言按照传统的习惯,提供了由各种各样的函数组成的库,用于完成诸如输入/输出、数学计算等功能。1. STL介绍标准模板库STL是当今每个从事C++编程的人需要掌握的技术,所有很有必要总结下本文将介转载 2016-03-08 16:41:56 · 460 阅读 · 0 评论 -
C语言strtok()函数:字符串分割
头文件:#include 定义函数:char * strtok(char *s, const char *delim);函数说明:strtok()用来将字符串分割成一个个片段。参数s 指向欲分割的字符串,参数delim 则为分割字符串,当strtok()在参数s 的字符串中发现到参数delim 的分割字符时则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s 字符串,往后的调原创 2016-03-08 16:42:23 · 381 阅读 · 0 评论 -
shutdown()
shutdown()是指禁止在一个套接口上进行数据的接收与发送。简述禁止在一个套接口上进行数据的接收与发送。Linux:#includeint shutdown(int sockfd,int how);linux下成功则返回0,错误返回-1,错误码errno:EBADF表示sockfd不是一个有效描述符;ENOTCONN表示sockfd未连接;ENOTSOCK表示sockf原创 2016-03-08 16:42:27 · 1138 阅读 · 0 评论 -
memchr函数
函数原型:extern void *memchr(void *str, char ch, unsigned count)参数说明:从str所指内存区域的前count个字节查找字符ch。 所在库名:#include 函数功能:当第一次遇到字符ch时停止查找。如果成功,返回指向字符ch的指针;否则返回NULL。 返回说明:返回void*类型指针(或者NULL)。其它说明:暂原创 2016-03-08 16:42:30 · 533 阅读 · 0 评论 -
美化mfc界面,给mfc界面加上皮肤
注明:里面使用到的资源文件在自己的腾讯微云有。原图:添加皮肤后:通过对比就能知道,加上皮肤后给人的感觉就是耳目一新了。技术详细说明:这里用到的是一个轻量型的美化工具SkinSharp又称Skin#,是非常好用的一款轻量化的VC程序美化工具官网地址是http://www.skinsharp.com/虽然SkinSharp是收费软件,但提供试用版,而且比较厚道,试用原创 2016-03-08 16:43:51 · 6668 阅读 · 0 评论 -
C++的一些干货,有各种c++的资料
链接是:http://www.csdn.net/article/2014-10-24/2822269-c++转载 2016-03-08 16:44:00 · 237 阅读 · 0 评论 -
vs下取得资源文件中的版本信息
在Windows Mobile和Wince(Windows Embedded CE)下开发的产品,有时候需要显示当前产品的版本信息。一般来说,版本信息是保存在资源文件里面的,例如下图: 为了保持一致,所有版本信息应该都从资源文件读取,不应该另外硬编码(Hard code)。下面讲述读取资源文件版本信息的方法:1.在资源文件中新建一个版本信息项 2.根据需求修改版本信息转载 2016-03-08 16:44:04 · 1061 阅读 · 0 评论 -
vs下给生成的程序(exe)加入默认的申请管理员权限
在vs下编程时,经常会用到一些特殊的权限,尤其是管理员权限,下面是在win7下笔者亲测通过的。下面要分两种情况:第一种情况就是在vs2003或者以下的编译器中运行1、准备一个manifest文件,命名如下:XPStyle.manifest文件的内容如下:xml version="1.0" encoding="UTF-8" standalone="yes"?> assem转载 2016-03-08 16:44:08 · 6746 阅读 · 0 评论 -
c/c++中的预编译指令总结
预处理指令提供按条件跳过源文件中的节、报告错误和警告条件,以及描绘源代码的不同区域的能力。使用术语“预处理指令”只是为了与 C 和 C++ 编程语言保持一致。在 C# 中没有单独的预处理步骤;预处理指令按词法分析阶段的一部分处理。 预处理器的主要作用就是把通过预处理的内建功能对一个资源进行等价替换,最常见的预处理有:文件包含,条件编译、布局控制和宏替换4种。 文件包含:#include 是一种原创 2016-03-08 16:44:13 · 312 阅读 · 0 评论 -
保护程序猿滴眼睛---修改VS 2012 编辑器颜色
转载于http://blog.csdn.net/qing666888/article/details/8973216字体,发现好多人选用 Consolas 。。。确实挺好看的。然后 修改背景色:如果你装有“眼睛护士”那么这里你可以选择自动其它就什么都不用设置了。其中自定义的颜色如下所示: 这样之后,看到的 vs2012改变背景颜色之后 字符串 等的 背景色是转载 2016-03-08 16:44:21 · 1591 阅读 · 0 评论 -
得到不知道维度的string数组的维度
在项目中常用到一类数组,那就是不知道个数的数组,例如: string ParamTable[] = {"frequency","ifbw","span","demodmode","afc","ifattmode","measuretime","detector","gainctrl","mgcvalue","squelchthreshold","recordshold","hold原创 2016-03-08 16:47:55 · 990 阅读 · 0 评论 -
自己的代码的风格——关键字的定义(变量的定义)匈牙利命名法
1、在定义变量的时候,c++中经常会用的就是匈牙利命名法,以求达到看到参数名就知道这个参数的类型和意义lstrParam:这是一个string类型的字符串,意义是用来存储设备参数的字符串这里有个关键,要定义一下什么类型的关键字的缩写是什么,一般在定义参数名的话类型关键字的缩写就在参数的前面,意义关键字在后面。例如strParam,类型关键字为str意义关键字为Param。下面规定以原创 2016-03-08 21:37:16 · 289 阅读 · 0 评论 -
C++输入cout与输出cin
转载于:http://c.biancheng.net/cpp/biancheng/view/116.html输入和输出并不是C++语言中的正式组成成分。C和C++本身都没有为输入和输出提供专门的语句结构。输入输出不是由C++本身定义的,而是在编译系统提供的I/O库中定义的。C++的输出和输入是用“流”(stream)的方式实现的。图3.2和图3.3表示C++通过流进行输入输出的过程。有转载 2016-03-08 16:42:56 · 3488 阅读 · 0 评论 -
C++继承中关于子类构造函数的写法
转载于:http://www.cnblogs.com/kaige/p/cplusplus_virtual_inheritance_derived_class_constructor.html构造方法用来初始化类的对象,与父类的其它成员不同,它不能被子类继承(子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法)。因此,在创建子类对象时,为了初始化从父类继承来的数据成员,系统需要调用转载 2016-03-08 16:42:53 · 1521 阅读 · 0 评论 -
#define用法详解
1.#define 的作用 在C或C++语言源程序中允许用一个标识符来表示一个字符串,称为“宏”。被定义为“宏”的标识符称为“宏名”。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。宏定义是由源程序中的宏定义命令完成的。宏代换是由预处理程序自动完成的。 在C或C++语言中,“宏”分为有参数和无参数两种。2. 无参宏定义 无原创 2016-03-08 16:42:32 · 328 阅读 · 0 评论 -
#define与typedef
#define(宏定义)只是简单的字符串代换(原地扩展),它本身并不在编译过程中进行,而是在这之前(预处理过程)就已经完成了。typedef是为了增加可读性而为标识符另起的新名称(仅仅只是个别名),它的新名字具有一定的封装性,以致于新命名的标识符具有更易定义变量的功能,它是语言编译过程的一部分,但它并不实际分配内存空间。 一般都遵循#define定义“可读”的常量以及一些宏语句的任务,原创 2016-03-08 16:42:35 · 324 阅读 · 0 评论 -
关于string::size_type
size_type其实是string模板类定义的一种类型之一,它与size_of的用法相似,只是它根据存储的类型返回字符串的长度.对于 string具体化,将根据char返回字符串的长度,在这种情况下,size_type与size_of等效.size_of是一种无符号类型. 你说的 size_type 其实就是 unsigned int 类型 其实并不正确,它要看其存储原创 2016-03-08 16:42:37 · 569 阅读 · 0 评论 -
std::string::find() 和 std::string::npos
npos是一个常数,用来表示不存在的位置,string::npos代表字符串到头了结束了。 int idx = str.find("abc");if (idx == string::npos) ... 上述代码中,idx的类型被定义为int,这是错误的,即使定义为 unsigned int 也是错的,它必须定义为 string::size_type。 npos 是这样定义原创 2016-03-08 16:42:39 · 347 阅读 · 0 评论 -
C++ 嵌套类使用(一)
转载于:http://www.cnblogs.com/charley_yang/archive/2011/04/05/2005897.html一、嵌套类 在一个类的内部定义另一个类,我们称之为嵌套类(nested class),或者嵌套类型。之所以引入这样一个嵌套类,往往是因为外围类需要使用嵌套类对象作为底层实现,并且该嵌套类只用于外围类的实现,且同时可以对用户隐藏该底层实现。转载 2016-03-08 16:42:42 · 237 阅读 · 0 评论 -
C++ 嵌套类使用(二)
转载于:http://www.cnblogs.com/chengmin/archive/2010/03/22/1691955.html嵌套类的访问问题:记得白凤煮的C++中有一句这样的话:C++嵌套类只是语法上的嵌套。然而在实践过程中,却并非如此。Ex:class A{public: static int a; class A1 {转载 2016-03-08 16:42:44 · 298 阅读 · 1 评论 -
C++ 嵌套类使用(三)
转载于:http://www.2cto.com/kf/201110/109443.html如果嵌套类型和其外部类型之间的关系需要成员可访问性语义,需要使用C++嵌套类,嵌套类型不应针对其声明类型以外的类型执行任务,而C++局部类允许类、结构和接口被分成多个小块儿并存储在不同的源文件中,这样的实现很容易开发和维护。C++局部类:在一个函数体内定义的类称为局部类。局部类中只能使用它的外围作转载 2016-03-08 16:42:47 · 263 阅读 · 0 评论 -
C++之内部类与外部类(嵌套类)及友元
转载于:http://www.cnblogs.com/qzhforthelife/p/3226885.html先上代码:class Outer{public: Outer(){m_outerInt=0;}private: int m_outerInt;public: //内部类定义开始 class Inner {转载 2016-03-08 16:42:49 · 667 阅读 · 0 评论