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
- 关于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与字符串输入输出
- string的定义与初始化
string c1("abcdefg");
string c1=c2;
string s(5,'c'); //定义s,即s="ccccc"
- string的连接
string s1("abcd"),s2("ef"),s3;
s3=s1+","+s2; //s3="abcd,ef"
-
大小比较
可以直接用"> >= == < <= !="来比较,实际比较其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');