C/C++
guoxiaoqian8028
这个作者很懒,什么都没留下…
展开
-
函数指针
函数指针,就是指向函数的指针。在C++中,函数指针一般是指全局命名空间中的函数指针,它与类成员函数指针有一点不同。在类中,首先类是具有类域的。一个指向类的成员函数的指针,不同于函数指针,只是声明的形式不同,基本思想还是一致的。使用这些指针对操作可能会带来很大的方便。另外,对于静态类来说,静态类没有this指针,静态类成员函数指针是普通函数指针,因为静态类成员函数是属于类的全局函数。函数转载 2012-09-01 18:15:42 · 540 阅读 · 0 评论 -
C++模板学习
1. 模板的概念。我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Overload)版本。//函数1.int max(int x,int y);{return(x>y)?x:y ;}//函数2.转载 2012-07-07 19:14:50 · 391 阅读 · 0 评论 -
使用模板类导致error LNK2019: 无法解析的外部符号
1.定义模板类:templateclass Stack{....};2.定义模板成员函数:每个函数头都要以相同的模板声明打头,并将类限定符改成:类名::这种形式。templatebool Stack::push(T tmp){...}3.模板类的使用Stack object;4.除非编译器实现了新的export关键字,否则将模板成员函数设置在一个独立的实原创 2012-09-14 00:28:26 · 5175 阅读 · 2 评论 -
哈希表的C++实现
哈希表的几个概念:映像:由哈希函数得到的哈希表是一个映像。冲突:如果两个关键字的哈希函数值相等,这种现象称为冲突。处理冲突的几个方法:1、开放地址法:用开放地址处理冲突就是当冲突发生时,形成一个地址序列,沿着这个序列逐个深测,直到找到一个“空”的开放地址,将发生冲突的关键字值存放到该地址中去。例如:hash(i)=(hash(key)+d(i)) MOD m转载 2012-08-31 16:21:41 · 13832 阅读 · 1 评论 -
bitset使用详解
有些程序要处理二进制位的有序集,每个位可能包含的是0(关)或1(开)的值。位是用来保存一组项或条件的yes/no信息(有时也称标志)的简洁方法。标准库提供了bitset类使得处理位集合更容易一些。要使用bitset类就必须要包含相关的头文件。在本书提供的例子中,假设都使用了std::bitset的using声明:#include using std::bitset;3.5.转载 2012-08-31 16:20:08 · 783 阅读 · 1 评论 -
C++ Vector要注意的问题
一、要包含头文件 #include二、要声明命名空间using namespace std;----------------------- Page 1----------------------- C++编程语言中有一种叫做Vector的应用方法,它的作用在实际编程中是非常重要的。在这里我们将会为大家 详细介绍一下C++ Vector转载 2012-08-25 15:37:33 · 525 阅读 · 0 评论 -
C++字符串处理函数
一、字符串连接函数 strcat其函数原型为 strcat(char[],const char[]);strcat是string catenate(字符串连接)的缩写。该函数有两个字符数组的参数,函数的作用是:将第二个字符数组中的字符串连接到前面字符数组的字符串的后面。第二个字符数组被指定为const,以保证该数组中的内容不会在函数调用期间修改。连接后的字符串放在第一个字符数组中转载 2012-10-14 17:07:11 · 815 阅读 · 0 评论 -
C++字符数组(定义和初始化、赋值和引用)
用来存放字符数据的数组是字符数组,字符数组中的一个元素存放一个字符。字符数组具有数组的共同属性。由于字符串应用广泛,C和C++专门为它提供了许多方便的用法和函数。一、字符数组的定义和初始化定义字符数组的方法与前面介绍的类似。例如char c[10];c[0]=′I′;c[1]=′ ′;c[2]=′a′;c[3]=′m′;c[4]=′ ′;c[5]=′h′;c[6]=′a′;c[转载 2012-10-14 17:08:10 · 21829 阅读 · 0 评论 -
格式化字符串——以C++的名义 (zt)
从第一堂C语言课上的那个printf开始,格式化字符串就成了我的梦魇。此后我还在很多地方遇到过它们:fprintf,sscanf以及CString的Format成员函数……。除了能记住%s(String的缩写)代表字符串,%d(Decimal的缩写)代表整数之外,每次用到格式化字符串的地方我都要求助于MSDN。直到我看到C++的字符串格式化方式后,我决定从此抛弃C的那套格式化字符串的方法。转载 2012-10-14 16:48:50 · 621 阅读 · 0 评论 -
string,CString,int,char*之间的相互转换
《C++标准函数库》中说的 有三个函数可以将字符串的内容转换为字符数组和C—string 1.data(),返回没有”\0“的字符串数组 2.c_str(),返回有”\0“的字符串数组 3.copy() .................................................................int 转 CString:CSt转载 2012-08-31 16:29:41 · 486 阅读 · 0 评论 -
C++指针详解
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的 类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 先声明几个指针放着做例子: 例一: (1)int*ptr; (2)char*ptr; (3)int**ptr; (4)int(*ptr)[3]; (5转载 2012-08-31 16:09:20 · 529 阅读 · 0 评论 -
c++ string类详解
之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。 好了,进入正题……… 首先,为了在我们的程序中使转载 2012-08-31 16:22:37 · 904 阅读 · 0 评论 -
c文件操作
13.3 文件的打开与关闭 文件在进行读写操作之前要先打开,使用完毕要关闭。所谓打开文件,实际上是建立文件的各种有关信息,并使文件指针指向该文件,以便进行其它操作。关闭文件则断开指针与文件之间的联系,也就禁止再对该文件进行操作。 在C语言中,文件操作都是由库函数来完成的。在本章内将介绍主要的文件操作函数。 13.3.1 文件的打开(fopen函数) fopen函数用来打开一转载 2012-08-31 16:17:48 · 644 阅读 · 0 评论 -
C++ STL hash_map
为什么需要hash_map 用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改: 岳不群-华山派掌门人,人称君子剑 张三丰-武当掌门人,太极拳创始人 东方不败-第一高手,葵花宝典 ...这些信息如果保存下来并不复杂,但是找起来比较麻烦。例如我要找"张三丰"的信息,转载 2012-08-26 14:06:52 · 447 阅读 · 0 评论 -
C++字符串和字符串结束标志
用一个字符数组可以存放一个字符串中的字符。如 char str[12]={′I′,′ ′,′a′,′m′,′ ′,′h′,′a′,′p′,′p′,′y′};用一维字符数组str来存放一个字符串″I am happy″中的字符。字符串的实际长度(10)与数组长度(12)不相等,在存放上面10个字符之外,系统对字符数组最后两元素自动填补空字符′\0′。为了测定字符串的实际长度,C转载 2012-10-14 17:10:27 · 7288 阅读 · 0 评论 -
C++字符数组的输入输出
字符数组的输入输出可以有两种方法:(1) 逐个字符输入输出,如例5.9。(2) 将整个字符串一次输入或输出。例如有以下程序段: char str[20]; cin>>str;//用字符数组名输入字符串 cout在运行时输入一个字符串,如 China↙在内存中,数组str的状态如图5.9所示,在5个字符的后面自动加了一个结束符′\0′。转载 2012-10-14 17:12:18 · 11769 阅读 · 0 评论 -
C++处理字符串的方法—字符串类与字符串变量
用字符数组来存放字符串并不是最理想和最安全的方法。C++提供了一种新的数据类型——字符串类型(string类型),在使用方法上,它和char、int类型一样,可以用来定义变量,这就是字符串变量——用一个名字代表一个字符序列。实际上,string并不是C++语言本身具有的基本类型,它是在C++标准库中声明的一个字符串类,用这种类可以定义对象。每一个字符串变量都是string类的一个对转载 2012-10-14 17:13:07 · 1842 阅读 · 0 评论 -
Unicode环境下CString转int需注意
CString nr1; bj.GetWindowText(nr1); int a=_ttoi(nr1); CString q; q.Format(_T("%d"),a); bj2.SetWindowText(q);原创 2012-10-14 17:18:12 · 619 阅读 · 0 评论 -
C++格式化字符串sprintf方法
在C++格式化字符串中,一般都是使用printf 和sprintf来指定串的格式。我们将会在这篇文章中为大家详细介绍其中的使用方法。AD:51CTO云计算架构师峰会 抢票进行中!C++编程语言中对于字符串的操作是一个应用广泛的基础技术。我们在这里将会为大家详细介绍一下有关C++格式化字符串的相关实现方法,希望大家在理解字符串操作方面可以获得一些帮助。转载 2012-10-14 18:07:25 · 1467 阅读 · 0 评论 -
剖析MFC多线程程序的同步机制
在线程执行过程中,或多或少都需要彼此交互,这种交互行为有多种形式和类型。例如,一个线程在执行完它被赋予的任务后,通知另一个线程任务已经完成。然后第二个线程做开始剩下的工作。下述对象是用来支持同步的:1)信号量2)互斥锁3)关键区域4)事件每个对象都有不同的目的和用途,但基本目的都是支持同步。当然还有其他可以用来同步的对象,比如进程和线程对象。后两者的使用由程序员决定,比如说转载 2012-08-31 16:25:55 · 2241 阅读 · 0 评论 -
#define与const
经典教材《effective c++》第一条就是讲的这个,这本书应该看看,还有《more effective c++》,以下是抄的书中第一节:条款1:尽量用const和inline而不用#define这个条款最好称为:“尽量用编译器而不用预处理”,因为#define经常被认为好象不是语言本身的一部分。这是问题之一。再看下面的语句:#define ASPECT_RATIO 1.653转载 2012-08-29 14:42:55 · 752 阅读 · 0 评论 -
C/C++中static关键字详解
静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值。 静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见。用法1:函数内部声明的static变量,可作为对象间的一种通信机制 如果一局部变量被声明为static,那么将只有唯一的一个静态分配的对象,它被用于在该函数的所有调用中表示这个变量。这个对象将转载 2012-10-16 21:57:38 · 499 阅读 · 0 评论 -
C++开源跨平台类库集
在如下的库支持下,开发的系统可以很方便移植到当前大部分平台上运行而无需改动,只需在对应的平台下 用你喜欢的编译器 重新编译即可-----------------------------------------------------------------------------------------简述------------------------------------转载 2012-10-16 21:56:04 · 630 阅读 · 0 评论 -
C++之标准库
C++标准库非常大。在C++标准中,关于标准库的规格说明占了密密麻麻300多页,这还不包括标准C库,后者只是 "作为参考"包含在C++库中。当然,并非总是越大越好,但在现在的情况下,确实越大越好,因为大的库会包含大量的功能。标准库中的功能越多,开发自己的应用程序时能借助的功能就越多。C++库并非提供了一切(没有提供并发和图形用户接口的支持),但确实提供了很多。几乎任何事都可以求助于转载 2012-10-16 22:12:06 · 667 阅读 · 0 评论 -
#pragma once与#ifndef #define #endif
C/C++有两种方式能够保证头文件只被编译一次: #pragma once是编译器相关的,就是说即使这个编译系统上有效,但在其他编译系统也不一定可以,不过现在基本上已经是每个编译器都有这个杂注了。 #ifndef,#define,#endif是C/C++语言中的宏定义,通过宏定义避免文件多次编译。所以在所有支持C++语言的编译器上都是有效的,如果写的程序要跨平台,最好使转载 2012-11-19 22:15:52 · 357 阅读 · 0 评论 -
C语言中time_t数据类型详细介绍
包含文件:#ifndef __TIME_T#define __TIME_T /* 避免重复定义 time_t */typedef long time_t; /* 时间值time_t 为长整型的别名*/#endif 既然time_t实际上是长整型,到未来的某一天,从一个时间点(一般是1970年1月1日0时0分0秒)到那时的秒数(即转载 2012-11-19 22:17:14 · 806 阅读 · 0 评论 -
时间处理 c++ 获取当前系统时间 1. 时间戳形式 2. char *形式
1. 获取时间戳:time_t rawtime;time(&rawtime); //结果是时间戳2. 将时间戳转为 char* 类型的日期 Www Mmm dd hh:mm:ss yyyy 1 /* ctime example */ 2 #include 3 #include 4 #include 5 6 using namespace st转载 2012-11-19 22:19:35 · 16042 阅读 · 0 评论 -
C与C++中的异常处理(new/delete)
今天,我们开始学习C++的new和delete操作时的异常处理。首先,我将介绍标准C++运行库对new和delete操作的支持。然后,介绍伴随着这些支持的异常。1.1 New和Delete表达式 当写B *p = new D;这里,B和D是class类型,并且有构造和析构函数,编译器实际产生的代码大约是这样的:B *p = operator new(sizeof(转载 2012-11-22 12:49:58 · 4365 阅读 · 0 评论 -
C++的格式化输出
(1)什么是“流”? C++中的“流”(stream)是一种抽象,它表示数据从源端流向目的端。 输入流(Input Stream)表示的是数据从输入设备(如键盘、磁盘等)流向内存,输出流(Output Stream)表示的是数据从内存流向输出设备(如屏幕、打印机、磁盘等)。输入输出流(I/O Stream)是输入流和输出流的合称。 “流”中的内容可以是任意形式的数据,例如:ASC转载 2013-01-04 19:34:12 · 427 阅读 · 0 评论 -
C++中Txt文件读取和写入
#include #include #include using namespace std;int main(){char buffer[256];ifstream myfile ("c:\\a.txt");ofstream outfile("c:\\b.txt");if(!myfile){ cout exit(1转载 2013-01-04 19:32:11 · 579 阅读 · 0 评论 -
static_cast的作用
用法:static_cast ( expression )该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:①用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。进行上行转换(把派生类的指针或引用转换成基类表示)是安全的;进行下行转换(把基类指针或引用转换成派生类表示)时,由于没有动转载 2013-01-26 15:10:48 · 973 阅读 · 0 评论 -
c++命名规范3
1.用Pascal规则来命名方法和类型。 public class DataGrid { public void DataBind() { } } 2.用Camel规则来命名局部变量和方法的参数. public class Product { p转载 2013-02-02 20:02:02 · 414 阅读 · 0 评论 -
C++命名规范1
常见命名法:匈牙利命名法:基本原则是:变量名=属性+类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。命名要基于容易记忆容易理解的原则。保证名字的连贯性是非常重要的。Camel命名法:即骆驼式命名法,原因是采用该命名法的名称看起来就像骆驼的驼峰一样高低起伏。Camel命名法有两种形式:混合使用大小写字母和单词之间加下划线,例如runFast和run_fa转载 2013-02-02 19:55:37 · 338 阅读 · 0 评论 -
常用c++第三方库
基础类1、 Dinkumware C++ Library参考站点:http://www.dinkumware.comP.J. Plauger编写的高品质的标准库。P.J. Plauger博士是Dr. Dobb's程序设计杰出奖的获得者。其编写的库长期被Microsoft采用,并且最近Borland也取得了其OEM的license,在其C/C+ +的产品中采用Dinkum转载 2013-02-02 20:04:27 · 2804 阅读 · 0 评论 -
通用简写表
说明:1、本缩写表是《编码命名规范》的附录。2、本缩写表中列出的都是通用性缩写,不提供标准缩写,如:Win9x、COM 等。3、使用本缩写表里的缩写时,请对其进行必要的注释说明。4、除少数情况以外,大部分缩写与大小写无关。通 用 缩 写 表缩 写全 称addrAddressadmAd转载 2013-02-02 20:19:11 · 7839 阅读 · 0 评论 -
c++命名规范2
命名规范的整体原则:同一性在编写一个子模块或派生类的时候,要遵循其基类或整体模块的命名风格,保持命名风格在整个模块中的同一性。标识符组成标识符采用英文单词或其组合,应当直观且可以拼读,可望文知意,用词应当准确。最小化长度 && 最大化信息量原则在保持一个标识符意思明确的同时,应当尽量缩短其长度。转载 2013-02-02 19:58:41 · 290 阅读 · 0 评论 -
关于C++中的友元函数的总结
1.友元函数的简单介绍1.1为什么要使用友元函数在实现类之间数据共享时,减少系统开销,提高效率。如果类A中的函数要访问类B中的成员(例如:智能指针类的实现),那么类A中该函数要是类B的友元函数。具体来说:为了使其他类的成员函数直接访问该类的私有变量。即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同一函数。实际上具体大概有下面两种情况需要使用友元转载 2013-02-13 16:05:02 · 434 阅读 · 0 评论 -
条件变量
条件变量与互斥锁不同,条件变量是用来等待而不是用来上锁的。条件变量用来自动阻塞一个线程,直到某特殊情况发生为止。通常条件变量和互斥锁同时使用。条件变量使我们可以睡眠等待某种条件出现。条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。条件的检测是在互斥锁的保护下进行的。如转载 2013-02-13 16:06:45 · 354 阅读 · 0 评论 -
让你的C++代码变的更加健壮
介绍在实际的项目中,当项目的代码量不断增加的时候,你会发现越来越难管理和跟踪其各个组件,如其不善,很容易就引入BUG。因此,我们应该掌握一些能让我们程序更加健壮的方法。这篇文章提出了一些建议,能有引导我们写出更加健壮的代码,以避免产生灾难性的错误。即使、因为其复杂性和项目团队结构,你的程序目前不遵循任何编码规则,按照下面列出的简单的规则可以帮助您避免大多数的崩溃情况。背景转载 2013-02-13 16:12:26 · 416 阅读 · 0 评论 -
C++调试技巧
自己总是用VC平台来开发东西,但是有时候总是出这样那样的问题,在这里把Visual C++开发工具与调试技巧整理摘录如下,希望对大家有用,省去大家再去搜索的烦恼。 1.如何在Release状态下进行调试 Project->Setting=>ProjectSetting对话框,选择Release状态。C/C++标签中的Category选General,Optimizations选转载 2013-02-13 16:14:40 · 591 阅读 · 0 评论