C-C++语言参考手册_第1页
C-C++语言参考手册_第2页
C-C++语言参考手册_第3页
C-C++语言参考手册_第4页
C-C++语言参考手册_第5页
已阅读5页,还剩299页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C/C++语言参考

C/C++语言参考

TableofContents

1.C/C++语言参考................................................................4

1.1预处理命令...............................................................5

1.1.1预处理命令.........................................................6

1.2操作符优先级............................................................10

1.3转义字符................................................................12

1.4ASCII码表..............................................................12

1.5基本数据类型............................................................19

1.6关键字..................................................................21

1.6.1关键字............................................................24

1.7StandardCI/O...........................................................................................................47

1.7.1StandardCI/O.................................................................................................49

1.8StandardCString&Character.................................................................................70

1.8.1StandardCString&Character.......................................................................75

1.9StandardCMath........................................................................................................92

1.9.1StandardCMath.............................................................................................94

1.10StandardCTime&Date.......................................................................................103

1.10.1StandardCTime&Date............................................................................104

1.11StandardCMemory...............................................................................................108

1.11.1StandardCMemory...................................................................................109

1.12OtherstandardCfunctions...................................................................................111

1

C/C++语言参考

1.12.1OtherstandardCfunctions.......................................................................112

1.13C++I/O..................................................................................................................119

1.13.1C++I/O........................................................................................................121

1.14C++String..............................................................................................................135

1.14.1C++String...................................................................................................137

1.15C++标准模板库.......................................................156

1.15.1C++Bitset....................................................................................................157

C++Bitset..........................................................................................158

1.15.2C++Double-EndedQueue........................................................................162

C++Double-EndedQueue.............................................................164

1.15.3C++List.......................................................................................................170

C++List.............................................................................................171

1.15.4C++Map......................................................................................................180

C++Map............................................................................................182

1.15.5C++Multimap.............................................................................................187

C++Multimap...................................................................................188

1.15.6C++Multiset...............................................................................................193

C++Multiset......................................................................................199

1.15.7C++PriorityQueue.....................................................................................218

C++PriorityQueue..........................................................................219

1.15.8C++Queue.................................................................................................220

C++Queue.......................................................................................221

2

C/C++语言参考

1.15.9C++Set......................................................................................................222

1.15.9.1C++Set...........................................................................................228

1.15.10C++Stack.................................................................................................247

1.15.10.1C++Stack......................................................................................248

1.15.11C++Vector...............................................................................................250

1.15.11.1C++Vector....................................................................................251

1.15.12Iterators.....................................................................................................262

1.16所有的C函数........................................................264

1.17所有的C++函数......................................................270

1.18所有的C/C++函数...................................................281

1.19感谢..................................................................298

2.Addenda...............................................................................................................................298

2.1Complexity...............................................................................................................298

2.2C++Containers.......................................................................................................299

2.3C++I/OFlags...........................................................................................................300

2.4StaticReturns!.........................................................................................................303

3

C/C++语言参考

1.C/C++语言参考

»匕士%C/C++

•OnjAiAuAj(See1.1)

•2Ux^udAIE%H(See1.2)

•xaQaxQ.Q(See1.3)

•ASCIIAe±i(See1.4)

•»u±%Ey%YAaBI(See1.5)

•10%uxQ(See1.6)

±ex%c63:

oStandardCl/O(See1.7)

oStandardCString&Character(See1.8)

oStandardCMath(See1.9)

oStandardCTime&Date(See1.10)

oStandardCMemory(See1.11)

oOtherstandardCfunctions(See1.12)

C++

•C++l/O(See1.13)

•C++Strings(See1.14)

4

C/C++语言参考

C++±ex%A£°a6a(See1.15)

oC++Bitsets(See1.15.1)

oC++Double-EndedQueues(See1.15.2)

oC++Lists(See1.15.3)

oC++Maps(See1.15.4)

oC++Multimaps(See1.15.5)

oC++Multisets(See1.15.6)

oC++PriorityQueues(See1.15.7)

oC++Queues(See1.15.8)

oC++Sets(See1.15.9)

oC++Stacks(See1.15.10)

oC++Vectors(See1.15.11)

olterators(See1.15.12)

1.1预处理命令

#,##(See1.1.1)manupilate字符串

#define(See1.1.1)定义变量

#error(See1.1.1)显示一个错误消息

#if,#ifdef,#ifndef,#else,#elif,#endif(See1.1.1)条件操作符

#include(See1.1.1)插入其它文件的内容

#line(See1.1.1)设置行和文件信息

5

C/C++语言参考

#pragma(See1.1.1)执行特殊命令

#undef(See1.1.1)取消定义变量

预定义变量(See1.1.1)其它变量

1.1.1预处理命令

#,##

#和##操作符是和#define宏使用的.使用#使在#后的首个参数返回为一个带

引号的字符串.例如,命令

#defineto_string(s)#s

将会使编译器把以下命令

cout<<to_string(HelloWorld!)<<endl;

理解为

cout<<"HelloWorld!"<<endl;

使用##连结##前后的内容.例如,命令

#defineconcatenate(x,y)x##y

intxy=10;

将会使编译器把

cout<<concatenate(x,y)<<endl;

解释为

6

-----------------------------C/6++------------------------------

cout<<xy<<endl;

理所当然,将会在标准输出处显示,i(r.

#define

语法:

#definemacro-namereplacement-string

#define命令用于把指定的字符串替换文件中的宏名称.也就是说,#define使编译

器把文件中每一个mcicro-name替换为replacement-string.替换的字符串结束于行

末.这里是一个经典的#define应用(至少是在C中):

#defineTRUE1

#defineFALSE0

intdone=0;

while(done!=TRUE){

)

#define命令的另外一个功能就是替换参数,使它假冒创建函数一样使用.如下的

代码:

#defineabsolute_value(x)(((x)<0)?-(x):(x))

intx=-1;

while(absolute_value(x)){

)

当使用复杂的宏时,最好使用额外的圆括号.注意在以上的例子中,变量"X"总是出

现在它自己的括号中.这样,它就可以在和0比较,或变成负值(乘以-1)前计算值.

同样的,整个宏也被括号围绕,以防止和其它代码混淆.如果你不注意的话,你可

能会被编译器曲解你的代码.

7

-----------------------------C/6++------------------------------

tterror

语法:

#errormessage

#error命令可以简单的使编译器在发生错误时停止.当遇到一个#error时,编译器会

自动输出行号而无论message的内容.本命令大多是用于调试.

#if,ttifdef,#ifndef,#else,#elif,#endif

这些命令让编译器进行简单的逻辑控制.当一个文件被编译时,你可以使用这些

命令使某些行保留或者是去处.

#ifexpression

如果表达式(expression)的值是"真"(true),那么紧随该命令的代码将会被编译.

#ifdefmacro

如果"macro"已经在一个#define声明中定义了,那么紧随该命令的代码将会被编

译.

#ifndefmacro

如果"macro"未在一个#define声明中定义,那么紧随命令的代码将会被编译.

一些小边注:命令#elif是"elseiF的一种缩写,并且他可以想你所意愿的一样工作.

你也可以在一"*'N/if后插入一^^"defined"或者"!defined"以获得更多的功能.

这里是一部分例子:

#ifdefDEBUG

cout<<"Thisisthetestversion,i=H<<i<<endl;

#else

cout<<"Thisistheproductionversion!"<<endl;

8

-------------------------------C/6++--------------------------------

#endif

你应该注意到第二个例子比在你的代码中插入多个"cout"进行调试的方法更简单.

ttinclude

语法:

#include<filename>

#includeufilename"

本命令包含一个文件并在当前位置插入.两种语法的主要不同之处是在于,如果

filename括在尖括号中,那么编译器不知道如何搜索它.如果它括在引号中,那么

编译器可以简单的搜索到文件.两种搜索的方式是由编译器决定的,一般尖括号意

味着在标准库目录中搜索,引号就表示在当前目录中搜索.Thespiffynew整洁的

新C++include目录不需要直接映射到filenames,至少对于标准库是这样.这就是

你有时能够成功编译以下命令的原因

#include<iostream>

#line

语法:

#lineline_number"filename*'

#Iine命令是用于更改_LINE_和_FILE_变量的值.文件名是可选的.

_LINE_和_FILE_变量描述被读取的当前文件和行.命令

#line10"main.cpp"

更改行号为10,当前文件改为"main.cpp”.

9

C/C++语言参考

ttpragma

#pragma命令可以让编程者让编译器执行某些事.因为#pragma命令的执行很特殊,

不同的编译器使用有所不同.一个选项可以跟踪程序的执行.

ttundef

#undef命令取消一个先前已定义的宏变量、譬如一个用#define定义的变量.

预定义变量

语法:

_LINE_

_FILE_

_DATE_

_TIME_

_cplusplus

_STDC_

下列参数在不同的编译器可能会有所不同,但是一般是可用的:

・—LINE_和_FILE—变量表示正在处理的当前行和当前文件.

・_DATE_变量表示当前日期,格式为month/day/year{月网年).

•_TIME_变量描述当前的时间,格式为hour:minute:secon邓寸:分:秒).

•_cplusplus变量只在编译C++程序时定义.

•_STDC_变量在编译一个C程序时定义,编译C++时也有可能定义.

1.2操作符优先级

优先级操作符

10

C/C++语言参考

10D->.

!~++--

2-(unary)*(dereference)

&(addressof)sizeof

3->**

4*(multiply)/%

5+-

6«»

7<<=>>=

8==!=

9&(bitwiseAND)

10A

11I

12&&

13II

14?:

15=+=-=etc.

16

11

C/C++语言参考

1.3转义字符

以下是使用转义字符的代码示例:

printf(HThis\nis\na\ntest\n\nShesaid,\"Howareyou?\n\nn);

输出:

This

is

a

test

Shesaid,"Howareyou?

1.4ASCII码表

咕%OGZE£@AU%0OZEXOQAe^o

0000NUL

1101SOHstartofheader

2202STXstartoftext

3303ETXendoftext

4404EOTendoftransmission

5505ENQenquiry

6606ACKacknowledge

7707BELbell

81008BSbackspace

12

C/C++语言参考

91109HThorizontaltab

10120ALFlinefeed

11130BVTverticaltab

1214OCFFformfeed

1315ODCRcarriagereturn

1416OESOshiftout

1517OFSIshiftin

162010DLEdatalinkescape

172111DC1noassignment,butusuallyXON

182212DC2

192313DC3noassignment,butusuallyXOFF

202414DC4

212515NAKnegativeacknowledge

222616SYNsynchronousidle

232717ETBendoftransmissionblock

243018CANcancel

253119EMendofmedium

26321ASUBsubstitute

27331BESCescape

28341CFSfileseperator

13

C/C++语言参考

29351DGSgroupseperator

30361ERSrecordseperator

31371FUSunitseperator

324020SPCspace

334121!

344222H

354323#

364424$

374525%

384626&

394727t

405028(

415129)

42522A*

43532B+

44542C

45552D-

46562E

47572F/

4860300

14

C/C++语言参考

4961311

5062322

5163333

5264344

5365355

5466366

5567377

5670388

5771399

58723A

59733B

60743C<

61753D=

62763E>

63773F?

6410040@

6510141A

6610242B

6710343C

6810444D

15

C/C++语言参考

6910545E

7010646F

7110747G

7211048H

7311149I

741124AJ

751134BK

761144CL

771154DM

781164EN

791174F0

8012050P

8112151Q

8212252R

8312353S

8412454T

8512555U

8612656V

8712757W

8813058X

16

C/C++语言参考

8913159Y

901325AZ

911335B[

921345C\

931355D]

941365EA

951375F

9614060

9714161a

9814262b

9914363c

10014464d

10114565e

10214666f

10314767g

10415068h

10515169i

1061526Aj

1071536Bk

1081546CI

17

C/C++语言参考

1091556Dm

1101566En

1111576F0

11216070P

11316171q

11416272r

11516373s

11616474t

11716575u

11816676V

11916777w

12017078X

12117179y

1221727Az

1231737B(

1241747CI

1251757D}

1261767E

1271777FDELdelete

18

C/C++语言参考

1.5基本数据类型

类型描述

void空类型

int整型

float浮点类型

double双精度浮点类型

char字符类型

C++定义了另外两个基本数据类型:bool和wchajt.

类型描述

bool布尔类型,值为true或false

wchar_t宽字符类型

类型修饰符

一些基本数据类型能够被signed,unsigned,short,和long修饰.当类型修饰符

单独使用的时候,默认的类型是int.下表是所有可能出现的数据类型:

bool

char

unsignedchar

signedchar

int

19

C/C++语言参考

unsignedint

signedint

shortint

unsignedshortint

signedshortint

longint

signedlongint

unsignedlongint

float

double

longdouble

wchar_t

类型大小和表示范围

基本数据类型的大小以及能够表示的数据范围是与编译器和硬件平台有关的.

"cfloat"(或者"float.h")头文件往往定义了基本数据类型能够表示的数据的最大

值和最小值.你也可以使用sizeof(See1.6.1)来获得类型的大小(字节数).然而,

很多平台使用了一些数据类型的标准大小,如.int和float通常占用32位,char

占用8位,double通常占用64位.bools通常以8位来实现.

20

C/C++语言参考

1.6关键字

asm(See1.6.1)插入一个汇编指令.

auto(See1.6.1)声明一个本地变量.

bool(See1.6.1)声明一个布尔型变量.

break(See1.6.1)结束一个循环.

case(See1.6.1)一个switch(See1.6.1)语句的一部分.

catch(See1.6.1)处理thrown(See1.6.1)产生的异常.

char(See1.6.1)声明一个字符型变量

class(See1.6.1)声明一个类.

const(See1.6.1)声明一个常量.

const_cast(See

从一^const变量中抛出.

1.6.1)

continue(See1.6.1)在循环中间断循环.

default(See1.6.1)是一个case(See1.6.1)语句中的缺省项

delete(See1.6.1)释放内存.

do(See1.6.1)构造循环体.

double(See1.6.1)声明一个双精度浮点变量.

dynamiccast(See

动态投射.

1.6.1)

21

C/C++语言参考

else(See1.6.1)是一个出See1.6.1)语句中的预备条件.

enum(See1.6.1)创建列举类型.

explicit(See1.6.1)仅用在构造器的正确匹配.

extern(See1.6.1)告诉编译器在别的地方变量已经被定义过了.

false(See1.6.1)属于布尔值.

float(See1.6.1)声明一个浮点型变量.

for(See1.6.1)构造循环.

friend(See1.6.1)允许非函数成员使用私有数据.

goto(See1.6.1)跳转到程序的其它地方.

if(See1.6.1)从一次判断的结果处执行代码.

inline(See1.6.1)定义一个函数为内联

int(See1.6.1)声明一个整型变量

long(See1.6.1)声明一个长整型变量.

mutable(See1.6.1)忽略const变量.

namespace(See

用一个定义的范围划分命名空间.

1.6.1)

new(See1.6.1)允许动态存储一个新变量.

operator(See1.6.1)创建重载函数.

private(See1.6.1)在一个类中声明私有成员

protected(See在一个类中声明被保护成员

22

C/C++语言参考

1.6.1)

public(See1.6.1)在一个类中声明公共成员.

register(See1.6.1)定义一个寄存器变量.

reinterpret_cast(See

改变一个变量的类型.

1.6.1)

return(See1.6.1)从一个函数中返回.

short(See1.6.1)声明一个短整型变量.

signed(See1.6.1)修改变量类型声明.

sizeof(See1.6.1)返回一个变量或类型的长度.

static(See1.6.1)给一个变量创建永久的存储空间.

static_cast(See

执行一个非多态性cast.

1.6.1)

struct(See1.6.1)创建一个新结构体.

switch(See1.6.1)让一个变量在不同的判断下执行不同的代码.

template(See1.6.1)创建一个给特殊函数.

this(See1.6.1)指向当前对象.

throw(See1.6.1)抛出一个异常.

true(See1.6.1)布尔类型的一个值.

try(See1.6.1)执行一个被throw(See1.6.1)抛出的异常.

typedef(See1.6.1)从现有的类型中创建一个新类型.

23

C/C++语言参考

typeid(See1.6.1)描述一个对象.

typename(See

声明一个类或未定义的类型.

1.6.1)

union(See1.6.1)一个结构体在当前位置分配给多个变量相同的内存.

unsigned(See1.6.1)声明一个无符号整型变量.

using(See1.6.1)用来输入一个namespace(See1.6.1).

virtual(See1.6.1)创建一个不被已构成类有限考虑的函数.

void(See1.6.1)声明函数或数据是无关联数据类型.

volatile(See1.6.1)警告编译器有关的变量可能被出乎意料的修改.

wchart(See1.6.1)声明一个带有宽度的字符型变量.

while(See1.6.1)用来构成循环.

1.6.1关键字

(See1.)->C/C++关键字(See1.6)■>细节

C/C++关键字

asm

语法:

asm("instruction");

24

C/C++语言参考

asm允许你在你的代码中直接插入汇编语言指令,各种不同的编译器为这一个指

令允许不一致形式,比如:

asm{

instruction-sequence

)

or

asm(instruction);

auto

关键字auto是用来声明完全可选择的局部变量的

bool

关键字bool是用来声明布尔逻辑变量的;也就是说,变量要么是真,要么是假。举

个例子:

booldone=false;

while(!done){

)

你也可以查看datatypesfSee1.5)这一页.

break

关键字break是用来跳出一个曲,for,orwhile的循环.它也可以结束一个switch

语句的子句,让程序忽略下面的case代码.举个例子:

while(x<100){

if(x<0)

break;

cout<<x<<endl;

25

-----------------------------C/6++------------------------------

x++;

)

break语句只能跳出本层循环,假如你要跳出一个三重嵌套的循环,你就要使用包含

其它的逻辑或者用一个goto语句跳出这个嵌套循环.

case

在switch里面用来检测匹配.

相关主题:

default,switch

catch

catch语句通常通过throw语句捕获一个异常.

相关主题:

throw,try

char

关键字char用来声明布尔型变量.你也可以查看datatypesfSee1.5)这一页…

class

语法:

classclass-name:inheritance-list{

private-members-list;

protected:

protected-members-list;

public:

26

C/C++语言参考

public-members-list;

}object-list;

关键字class允许你创建新的数据类型.class-name就是你要创建的类的名字,并且

inheritance-list是一个对你创建的新类可供选择的定义体的表单.类的默认为私有

类型成员,除非这个表单标注在公有或保护类型之下.object-list是一个或一组声明

对象.举个例子:

classDate{

intDay;

intMonth;

intYear;

public:

voiddisplay();

);

相关主题:

struct,union

const

关键字const用来告诉编译器一个一旦被初始化过的变量就不能再修改.

相关主题:

constcast

const_cast

语法:

const_cast<type>(object);

关键字const用于移除"const-ness"的数据,目标数据类型必须和原类型相同,目标数

据没有被const定义过除外.

27

---------------------------------------------------------------C/C++语言参考---------------------------------------

相关主题:

dynamiccast,reinterpretcast,statijcast

continue

continue语句用来结束这次循环在一个循环语句中,例如,下面这段代码会显示所有

除了10之外0-20的所有数字:

for(inti=0;i<21;i++){

if(i==10){

continue;

)

cout<<i<<'*";

)

相关主题:

break,do,for,while

default

switch语句中的缺省条件.

相关主题:

case,switch

delete

语法:

deletep;

delete[]pArray;

delete操作用来释放〃指向的内存.这个指针先前应该被g调用过.上面第二种形

式用于删除一个数组.

28

C/C++语言参考

相关主题:

new

do

语法:

do{

statement-list;

}while(condition);

do构建一个循环语句表,直到条件为假.注意循环中的语句至少被执行一次,因为判

断条件在循环的最后.

相关主题:

for,while

double

关键字double用来声明浮点型变量的精度.你也可以查看datatypesfSee1.5)这

一页.

dynamic_cast

语法:

dynamic_cast<type>(object);

关键字dynamic_cast强制将一个类型转化为另外一种类型,并且在执行运行时时

检查它保证它的合法性。如果你想在两个互相矛盾的类型之间转化时,cast的返

回值将为NULL.

29

---------------------------------------------------------------C/C++语言参考-------------------------------------

相关主题:

constcastreinterpretcaststatijcast

else

关键字else用在jf语句中的二中选一.

enum

语法:

enumname{name-list}var-list;

关键字enum用来创建一个包含多个名称元素的名称表.vw是可选的.例如:

enumcolor{red,orange,yellow,green,blue,indigo,violet};

colorcl=indigo;

if(cl==indigo){

cout<<nclisindigo"<<endl;

explicit

当构造函数被指定为explicit的时候,将不会自动把构造函数作为转换构造函数,这

仅仅用在当一个初始化语句参数与这个构造函数的形参匹配的情况.

extern

关键字extern用来告知编译器变量在当前范围之外声明过了.被extern语句描述过

的变量将分派不到任何空间,因为他们在别的地方被定义过了.

Extern语句频繁的用于在多个文件之间的跨范围数据传递.

30

C/C++语言参考

false

"false"是布尔型的值.

相关主题:

bool,true

float

关键字float用来声明浮

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论