第一章 C++与面向对象程序设计概述

1 面向过程和面向对象程序设计


(1)面向对象程序语言的特征

	抽象 封装 继承 多态

(2)C++的特点

  高效性
  灵活性
  丰富的运算符和数据类型
  可移植性
  支持面向对象程序设计

(3)C++中的数据类型

bool(布尔型)         长度(字节):1   取值范围:false,true

char(字符型)         长度(字节):1  取值范围:-128~127

signed char(有符号字符型)   长度(字节):1   取值范围:-128~127

unsigned char(无符号字符型)  长度(字节):1   取值范围:0~255

short(signed short)       长度(字节):2   取值范围:-32768~32767

unsigned short          长度(字节):2  取值范围:0~65535

int(signed int)         长度(字节):4  取值范围:-2147483648~2147483647

unsigned int            长度(字节):4   取值范围:0~4294967295

long(signed long)       长度(字节):4   取值范围:-2147483648~2147483647

unsigned long          长度(字节):4   取值范围:0~4294967295

float(浮点型,表示实数)    长度(字节):4   取值范围:3.4*10-38~3.4*1038

double(双精度浮点型)      长度(字节):8   取值范围:1.7*10-308~1.7*10308

long double            长度(字节):8  取值范围:1.7*10308~1.7*10308


C++的基本数据类型bool(布尔型)、char(字符型)、int(整型)、float(浮点型,表示实数)、double(双精度浮点型,简称双精度型)。除了bool型外有两大类:整数和浮点数。因为char型从本质上说也是整数类型,它是一个长度为1个字节的整数,通常用来存放字符的ASCII码,其中关键字signed和unsigned,以及关键字short和long被称为修饰符。

用short修饰int时,short int表示短整型,占2字节,此时int可以省略。long可以用来修饰int和double。用long修饰int时,long int表示长整型,占4个字节,同样此时int也可以省略

char,signed char,unsigned char是3种不同的数据类型。

float可以保存7位有效数字,double可以保存15位有效数字


该表转自:C++的基本数据类型


(4)输出格式控制符

“流操纵算子”栏中的星号 * 不是算子的一部分,星号表示在没有使用任何算子的情况下,就等效于使用了该算子。例如,在默认情况下,整数是用十进制形式输出的,等效于使用了 dec 算子。

流操纵算子作 用
常用
*dec以十进制形式输出整数
hex以十六进制形式输出整数
oct以八进制形式输出整数
fixed以普通小数形式输出浮点数
scientific以科学计数法形式输出浮点数
left左对齐,即在宽度不足时将填充字符添加到右边
*right右对齐,即在宽度不足时将填充字符添加到左边
setbase(b)设置输出整数时的进制,b=8、10 或 16
setw(w)指定输出宽度为 w 个字符,或输人字符串时读入 w 个字符(只对紧随其后的一个输出数据有效!!!)
setfill(c)在指定输出宽度的情况下,输出的宽度不足时用字符 c 填充(默认情况是用空格填充)
setprecision(n)设置输出浮点数的精度为 n。

在使用非 fixed 且非 scientific 方式输出的情况下,n 即为有效数字最多的位数,如果有效数字位数超过 n,则小数部分四舍五人,或自动变为科学计 数法输出并保留一共 n 位有效数字.

在使用 fixed 方式和 scientific 方式输出的情况下,n 是小数点后面应保留的位数
setiosflags (标志)将某个输出格式标志置为 1
resetiosflags(标志)将某个输出格式标志置为 0
不常用
boolapha把 true 和 false 输出为字符串
*noboolalpha把 true 和 false 输出为 0、1
showbase输出表示数值的进制的前缀
*noshowbase不输出表示数值的进制.的前缀
showpoint总是输出小数点
*noshowpoint只有当小数部分存在时才显示小数点
showpos在非负数值中显示 +
*noshowpos在非负数值中不显示 +
*skipws输入时跳过空白字符
noskipws输入时不跳过空白字符
uppercase十六进制数中使用 A~E。若输出前缀,则前缀输出 0X,科学计数法中输出 E
*nouppercase十六进制数中使用 a~e。若输出前缀,则前缀输出 0x,科学计数法中输出 e。
internal数值的符号(正负号)在指定宽度内左对齐,数值右对 齐,中间由填充字符填充


  • 关于boolalpha
int main()
{
	bool a=true;
	cout<<a<<endl;
	cout<<boolalpha<<a<<endl; 
	a=false;
	cout<<a<<endl;
	cout<<noboolalpha<<a<<endl;
}
1
true
false
0

  1. 关于showbase

1

int main()
{
	cout<<showbase<<hex<<0x123456<<endl;
}

0x123456

2

int main()
{
	cout<<hex<<0x123456<<endl;
}
123456
  • 关于setfill()
int main()
{
	cout<<setw(10)<<setfill('!')<<123<<setw(5)<<999;
}
!!!!!!!123!!999

setw()只对紧随其后的第一个输出有效,而setfill()对后面所有的输出都有效

  • 关于skipws

1

int main()
{
	char a[100],b[100];
	cin>>skipws>>a>>b;
	cout<<a<<endl<<b<<endl;
}
输入
1234 1234
输出
1234
1234

2

int main()
{
	char a[100],b[100];
	cin>>noskipws>>a>>b;
	cout<<a<<endl<<b<<endl;
}
输入
1234 123
输出
1234
							//这是空格
  • 关于setiosflags
    setiosflags 算子实际上是一个库函数,它以一些标志作为参数,这些标志可以是在 iostream 头文件中定义的以下几种取值,它们的含义和同名算子一样。
ios::left          ios::right        ios::internal
ios::showbase      ios::showpoint    ios::uppercase    ios::showpos
ios::scientific    ios::fixed

这些标志实际上都是仅有某比特位为 1,而其他比特位都为 0 的整数。

多个标志可以用|运算符连接,表示同时设置。例如:

cout << setiosflags(ios::scientific|ios::showpos) << 12.34;

部分内容转自:C++ cout格式化输出(输出格式)完全攻略

(5)string与字符串输入输出

  1. string的定义与初始化
string c1("abcdefg");
string c1=c2;
string s(5,'c');					//定义s,即s="ccccc"
  1. string的连接
string s1("abcd"),s2("ef"),s3;
s3=s1+","+s2;						//s3="abcd,ef"
  1. 大小比较

    可以直接用"> >= == < <= !="来比较,实际比较其ASCII码

(6)数据输入输出的经典问题

1.cin.get(char c)	其实就相当与是C语言中的getchar();
2.cin.getline(char* c,int n,char='\n')
	有三个参数
	c为字符数组 n为要提取的字符个数 最后一个是用于指定停止输入提取数据的结束符
	(系统会在第n个位置填写结束符'\0'**尤其注意**
	当输入的字符多于getline()指定的字符个数时,getline()会把余下的字符留在输入留中,同时设置输入失效位,关闭输入,即后面的cin都失效。
	这个时候需要用cin.clear()来恢复输入位
	并且要用cin.ignore()忽略掉前面多输入的字符(具体应看实际要求)
	通常做法:cin.ignore(1024,'\n');
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值