c++7.23

异常:

异常的最基本模式

try{

待测试语句;

if() //判断语句;

throw 信息; //抛出错误信息

}catch(捕获的错误类型){ //捕获错误信息

 

a; //错误信息处理措施

}

 

模拟一个一层层 错误抛出的函数

#include <iostream>

using namespace std;

struct A{};

funa(int k)

{

if(k==1)

{

cout<<”A1的问题我已经解决了”;

}

if(k==1)

{

cout<<”A2的问题我没办法解决,好像B会解决”;

throw 9.5;

}

if(k==1)

{

cout<<”A3的问题我没办法解决,我也不知道谁能解决先抛出吧”;

throw ‘a’;

}

if(k==1)

{

cout<<”A4的问题我没办法解决,我也不知道谁能解决先抛出吧”;

throw A();

}

 

 

}

funb(int k)

{

try{

funa(k);

}

catch(double)

{

cout<<”B:2类型的问题我已经解决了”<<endl;

}

catch(char)

{

cout<<”B:3类型的问题我可解决不了听说C会呢”<<endl;

throw ‘a’;

}

catch(A)

{

cout<<”C4类型的问题我没办法解决,我也不知道谁能解决先抛出吧”;

throw A();

}

}

func(int k)

{

try{

funb(k);

}

catch(char)

{

cout<<”C3的问题我已经解决了”<<endl;

}

catch(A)

{

cout<<”D4类型的问题我没办法解决,听说主函数会呢”;

throw A();

}

 

 

}

 

int main()

{

try{

func(1);

func(2);

func(3);

func(4); //1,2,3,4 分别代表4中错误类型int ,double.char,结构体;

}catch(A)

{

cout<<”这么简单的错误结构体错误都不会,还是我来解决吧”<<endl;

}

return 0;

}

 

输入输出:

iostream:输入输出流操作;

fstream:文件I/O操作;

strstram;字符串I/O操作;

stdiostream:c c++混合使用头文件;

iomanip 格式化I/O头文件;

 

c++: cin 输入 ,cout 输出 cerr 错误输出 clog 出错输出;

Cstdin 输入  stdout 输出 stderr 错误输出;

 

类比于 C中 一%o 等以各种进制形式输出一样,C++中也可以。

int a=10;

cout<<dec<<a<<endl; //10进制输出

cout<<hex<<a<<endl; //16进制输出

cout<<setbase(8)<<endl; //8进制输出 此处要加头文件 #include <iomanip>

 

还有很多函数setfill(‘*’),//以‘*’补全剩余字符setw(20) //限制域的长度setprecision(8) 8位精确度,等等,详情见c c++上课发的手册;

put 函数

cout.put(‘a’);即是输出a这个字符,连续输出字符cout.put(‘g’).put(‘o’).put(‘o’).put(‘d’);

cin.get(),从终端得到一个字符,或者字符串。

char a[10];

cin.get(a,10,’\’);    //从终端输入10个字符,以\位结束符。到a数组里面

getline 作用一样。

peek(),观察下一个字符;

putback() 将前面用get或这getline函数从输入流中读取的字符ch返回到输入流,插入到当前指针位置,供后面读取;

ignoro():  cin.ignore(n, 终止字符);

 跳过输入流中n个字符,或在遇到指定的终止字符时提前结束。

 :ighore(5,A) //跳过输入流中个字符,遇‘A’后就不再跳了;

 

c++ 文件流操作

#include <iostream>

using namespace std;

struct A{

int num;

char name[20];

int score;

}

int main()

{

fstream a(“hello.txe”,ios::in|ios::out|ios::trunc);

int i;

A b[3]={1,”li”,98,2,”hong”,95,3,”ai”,90};

for(int i=0;i<3;i++)

{

a.outfile<<b[i];

cout<<b[i].name<<b[i].num<<b[i].score<<endl;

}

A c[3];

a.seekg(0,ios::beg);            //把读写位置调到开始位置

for(int i=0;i<3;i++)

{

a.infile>>c[i];

cout<<c[i];

}

return 0;

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值