C++ (五)

C++的异常机制

C语言错误处理机制有: 函数返回值  
        使代码变得更加复杂   异常逻辑和正常代码逻辑混淆
setjmp/longjmp  直接错误跳转  使用方便  但是局部对象得不到析构

C++ 异常处理机制是 throw  try-catch
	抛出异常   捕获和处理异常
C++ 异常处理机制和python\java都大同小异

try{
	//可能发生异常的代码
}catch(异常类型& e){//根据异常类型来捕获异常
	
}catch(异常类型& e){
	
}catch(...){//确保一定捕获异常
	
}
当程序发生异常之后 直接中断代码(不会继承往下执行) 而是抛出一个异常对象
然后到 有catch的分支去进行类型匹配,如果 异常对象 isA 异常类型 则进行对应的catch分支执行代码
如果没有对应的异常类型可以匹配,则会继承往外抛 直到被捕获 或者 默认处理(终止程序,输出异常信息)

如果捕获之后 成员处理,代码可以接着 try-catch分支往后继承正常运行

函数可以有异常说明:
返回值类型 函数名(形参列表)throw (可能抛出的异常类型){
	
}

如果一个函数没有异常说明,则表明该函数可以抛出任意的异常
如果在一个函数内抛出不在异常说明里的异常类型,则try-catch时无法catch到该异常类型
	也就是说try-catch的异常只能是函数异常说明里面的异常类型
	
函数的异常说明是为了异常时方便去写catch捕获的异常类型

重写时子类不能抛出比父类更多的异常种类(注意种类不是个数)

自定义异常 和 抛出异常
	自定义异常一般都继承 exception类

C++的IO

cout.setf(ios::left);
标志 功能 用 对象.setf()来设置
boolalpha 可以使用单词"true"和"false"进行输入/输出的布尔值.
dec 用十进制格式显示后面的数值.
fixed 用正常的记数方法显示浮点数(与科学计数法相对应).
hex 用十六进制格式显示后面的数值.
internal 将填充字符回到符号和数值之间.
left 输出调整为左对齐.
oct 用八进制格式显示后面的数值.
right 输出调整为右对齐.
scientific 用科学记数法显示浮点数.
showbase 输出时显示所有数值的基数.
showpoint 显示小数点和额外的零,即使不需要.
showpos 在非负数值前面显示"+".
skipws 当从一个流进行读取时,跳过空白字符(spaces, tabs, newlines).
unitbuf 在每次插入以后,清空缓冲区.
uppercase 以大写的形式显示科学记数法中的"e"和十六进制格式的"x".

<iostream>中定义的操作符 

操作符 描述 输入 输出 cout << dec << num << endl;
boolalpha 启用boolalpha标志 X X
dec 启用dec标志 X X
endl 输出换行标示,并清空缓冲区 X
ends 输出空字符 X
fixed 启用fixed标志 X
flush 清空流 X
hex 启用 hex 标志 X X
internal 启用 internal 标志 X
left 启用 left 标志 X
noboolalpha 关闭boolalpha 标志 X X
noshowbase 关闭showbase 标志 X
noshowpoint 关闭showpoint 标志 X
noshowpos 关闭showpos 标志 X
noskipws 关闭skipws 标志 X
nounitbuf 关闭unitbuf 标志 X
nouppercase 关闭uppercase 标志 X
oct 启用 oct 标志 X X
right 启用 right 标志 X
scientific 启用 scientific 标志 X
showbase 启用 showbase 标志 X
showpoint 启用 showpoint 标志 X
showpos 启用 showpos 标志 X
skipws 启用 skipws 标志 X
unitbuf 启用 unitbuf 标志 X
uppercase 启用 uppercase 标志 X
ws 跳过所有前导空白字符 X

1.格式化读写
<< >> 格式化读取

2.按字符读写
put get
getline()

3.二进制读写
write read

Makefile 文件 只会编译修改过的文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值