C++(四十六) — 异常处理机制、标准IO输入输出
1、异常处理机制
一般来说,异常处理就是在程序运行时对异常进行检测和控制。而在C++ 中,使用 try-throw-catch模式进行异常处理的机制。
#include<iostream>
using namespace std; int Fib(int n)
{
if (n <= )
throw n;
if (n >= )
throw "n>=47 overflow";
if (n == || n == )
return ;
else
return Fib(n - ) + Fib(n - );
} void main()
{
int n, fn;
try
{
cin >> n;
cout << Fib(n) << endl;
}
catch (int m)
{
cout << "运行D异常,n=" << m << endl;
}
catch (char *s)
{
cout << s << endl;
}
system("pause");
}
注意:
(1)C++中,异常的引发和处理不在一个函数中,上层可以根据不同类型的异常进行处理;按照栈模型处理,一层层传递;
(2)如果 接受异常的时候,使用一个异常变量,则copy 构造异常变量;
(3)使用 引用的话,会使用 throw 时候的那个对象;
(4)指针可以和引用、元素写在一起,但是 引用 和 元素 不能写在一起;
(5)类对象时,使用引用比较合适。
2、标准IO输入输出关系图
iostream 是输入/输出流类,由 istream、ostream 两个基类共同派生出来。
3、标准输入流对象
(1)cin.ignore(2); //忽略两个字符位置
#include<iostream>
using namespace std; //标准输入流对象 cin void main()
{
/*
// 输入遇到 空格 即停止接受数据,
char mybuf[1024];
int myInt;
*/ // 读取数据时包含 空格
char ch,a,b,c;
while ((ch = cin.get()) != EOF)//ctrl+z 结束
{
cout << ch << endl;
} cin.get(a);// 只读取缓冲区的第一个字符
cin.get(b);
cin.get(a).get(b);//因为返回的是引用,所以可以链式编程 // getline():可以从输入流中读取多个字符,可以指定输入终止字符(默认是换行符),
// 读取完成后,从读取的内容中删除该终止符。
//输入:aa bb cc dd
//输出:buf1:aa ,buf2: bb cc dd
char buf1[], buf2[];
cin >> buf1;//只保存第一个,遇到空格即停止
cin.getline(buf2, );//保存空格,遇到 换行符 即停止。 system("pause");
}
4、标准输出流对象
- cout:标准输出,缓冲区满时被输出;
- cerr:标准错误输出,没有缓冲,发送给他的内容立即被输出;
- clog:类似于 cerr, 但是有缓冲,缓冲区满时被输出;
使用成员函数或者操作符设置输出格式,操作符在标准头文件 iomanip 中定义。
- cout.put('h').put('e') << endl;:输出单个字符;
char *p = "hello";
cout << *p << endl;//只输出第一个字符
cout.write(p, strlen(p)) << endl; //对于指针内容的输出,可以控制输出内容的大小
cout.write(p, strlen(p)-2) << endl;- stefill('*')、fill('*'):设置填充字符为 *;
- setw(n) 、width(n):设置输出宽度
- setprecision(n) 、precision(n):显示小数精度为 n 位
- left 、right:左对齐、右对齐
- dec、 hex 、oct:十进制、十六进制、八进制
C++(四十六) — 异常处理机制、标准IO输入输出的更多相关文章
- NeHe OpenGL教程 第四十六课:全屏反走样
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- 四十六、android中的Bitmap
四十六.android中的Bitmap: http://www.cnblogs.com/linjiqin/archive/2011/12/28/2304940.html 四十七.实现调用Android ...
- Android简易实战教程--第四十六话《RecyclerView竖向和横向滚动》
Android5.X后,引入了RecyclerView,这个控件使用起来非常的方便,不但可以完成listView的效果,而且还可以实现ListView无法实现的效果.当然,在新能方便也做了大大的提高. ...
- “全栈2019”Java第四十六章:继承与字段
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 第四十六个知识点 在Sigma协议中,正确性,公正性和零知识性意味着什么
第四十六个知识点 在Sigma协议中,正确性,公正性和零知识性意味着什么 Sigma协议 Sigma协议是Alice想要向Bob证明一些东西的协议(Alice知道一些秘密).他们有下面的一般范式:Al ...
- Python笔记(四):异常处理机制与 open()
(一) 异常处理机制概述 就像日常生活中会遇到各种意外情况一样(例如:你可能考虑过如果中了500w该怎么做),代码运行过程中也会遇到这种意外情况,python提供了这么一种机制,处理意外情况(就像如 ...
- abp(net core)+easyui+efcore实现仓储管理系统——入库管理之十(四十六)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...
- Deep learning:四十六(DropConnect简单理解)
和maxout(maxout简单理解)一样,DropConnect也是在ICML2013上发表的,同样也是为了提高Deep Network的泛化能力的,两者都号称是对Dropout(Dropout简单 ...
- Python之路(第四十六篇)多种方法实现python线程池(threadpool模块\multiprocessing.dummy模块\concurrent.futures模块)
一.线程池 很久(python2.6)之前python没有官方的线程池模块,只有第三方的threadpool模块, 之后再python2.6加入了multiprocessing.dummy 作为可以使 ...
随机推荐
- android文件分享在android7.0以上版本报错的解决方案
最近在使用蓝牙进行文件分享时,出现了一个奇怪的问题.同样的代码在android5.1上可以顺利运行,但是在android7.0上就运行失败.出现如下的错误: Caused by: android.os ...
- EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案-Onvif(一)使用Onvif协议进行设备发现以及指定设备信息探测
背景分析 众所周知,EasyNVR不拘泥.不受限于摄像机的品牌厂商及其配套平台,只要是网络监控摄像机IPC.硬盘录像机NVR.且设备支持标准的RTSP/Onvif协议,都可以接入实时视频流进入Easy ...
- ETF计算公司:现金差额
T日现金差额=T日最小申赎单位的基金净值-(申购.赎回清单中必须现金替代的替代金额+申购.赎回清单中可以现金替代成份证券的数量与T日收盘价之和+申购.赎回清单中禁止现金替代成份证券的数量与T日收盘价之 ...
- Centos7个性化桌面美化
个人电脑系统由Windows转Kali(Linux)再转Windows,工作后因为都是接触的Centos7系统,再加上厌烦年Win10,于是再次投回LInux的怀抱,将电脑系统直接重装为Linux系统 ...
- Kubernetes 使用 Weave Scope 监控集群(十七)
目录 一.安装 二.使用 Scope 2.1.拓扑结构 2.2.在线操作 2.3.强大的搜索功能 创建 Kubernetes 集群并部署容器化应用只是第一步.一旦集群运行起来,我们需要确保一起正常,所 ...
- 解决org.springframework.dao.DeadlockLoserDataAccessException
添加链接池后批量添加更新出现了死锁 org.springframework.dao.DeadlockLoserDataAccessException: ### Error updating datab ...
- replace的回调函数。
今天在看算法时,看到一些题目,感觉replace的回调函数好奇葩,$0 .$1什么的: JS的replace方法: str.replace(regexp|substr, newSubStr|funct ...
- 【LEETCODE】66、字符串分类,hard级别,题目:32,72,76
package y2019.Algorithm.str.hard; import java.util.Stack; /** * @ProjectName: cutter-point * @Packag ...
- C# vb .net实现像素化效果滤镜打马赛克
在.net中,如何简单快捷地实现Photoshop滤镜组中的像素化效果打马赛克呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授 ...
- springboot笔记10——整合Redis
依赖 <dependencies> <!--web依赖--> <dependency> <groupId>org.springframework.boo ...