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 作为可以使 ...
随机推荐
- python时间戳,获取当前时间,时间格式转换,求出前几天或后几天的时间
import time import datetime import locale import random class TimeUtil: def __init__(self, curtime=N ...
- Elasticsearch学习之集群常见状况处理(干货)
1. 集群健康状况处理 当集群处于yellow或者red状态的时候,整体处理步骤如下: (1) 首先查看集群状态 localhost:/_cluster/health?pretty { "c ...
- 快速改变文件hash值的方法
查看哈希值命令 Linux : md5sum + 文件名 $ md5sum .png fe5c3f5ef1d207bc1b646911b463c907 .png Windows : certutil ...
- sublime 光标由竖线变下横线
编程时偶尔会突然出现光标突然间由“小竖线”变成“黑块矩形”,网上有说在控制面板中进行设置.由于光标是在使用中突然发生变化,推测是碰到了快捷键,因此断定有快捷键可以修改.后来,无意中碰到了“Insert ...
- General VDPConfig对讲配置工具
General VDPConfig大华楼宇对讲配置工具是ConfigTool的一个对讲模块,主要服务对象为可视对讲的门口机和室内机,大华可视对讲在独户应用中,利用了自身在视频监控领域的优势,充分整合了 ...
- Kubernetes 使用 Weave Scope 监控集群(十七)
目录 一.安装 二.使用 Scope 2.1.拓扑结构 2.2.在线操作 2.3.强大的搜索功能 创建 Kubernetes 集群并部署容器化应用只是第一步.一旦集群运行起来,我们需要确保一起正常,所 ...
- TopShelf+Quartz.net 实现window服务
Quartz.NET官网 TopShelf 网址 代码地址:https://github.com/SeaLee02/ProjectDemo/tree/master/WindowServerDemo ...
- mongodb4.2.2 centos 单机安装
下载 rpm包 wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.2/x86_64/RPMS/mongodb-org-server-4. ...
- FORMAT 的用法
https://www.cnblogs.com/gaodu2003/archive/2008/12/22/1359927.html Format 格式指令具有以下的形式:"%" [ ...
- day56——http协议、MVC和MTV框架模式、django下载安装、url路由分发
day56 昨日复习 今日内容 HTTP协议 网页:https://www.cnblogs.com/clschao/articles/9230431.html 老师整理的重点 老师整理的重点 请求信息 ...