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、标准输出流对象

  1. cout:标准输出,缓冲区满时被输出;
  2. cerr:标准错误输出,没有缓冲,发送给他的内容立即被输出;
  3. clog:类似于 cerr, 但是有缓冲,缓冲区满时被输出;

  使用成员函数或者操作符设置输出格式,操作符在标准头文件 iomanip 中定义。

  1. cout.put('h').put('e') << endl;:输出单个字符;
  2. char *p = "hello";

    cout << *p << endl;//只输出第一个字符

    cout.write(p, strlen(p)) << endl;   //对于指针内容的输出,可以控制输出内容的大小
    cout.write(p, strlen(p)-2) << endl;

  3. stefill('*')、fill('*'):设置填充字符为 *;
  4. setw(n) 、width(n):设置输出宽度
  5. setprecision(n) 、precision(n):显示小数精度为 n 位
  6. left 、right:左对齐、右对齐
  7. dec、 hex 、oct:十进制、十六进制、八进制

C++(四十六) — 异常处理机制、标准IO输入输出的更多相关文章

  1. NeHe OpenGL教程 第四十六课:全屏反走样

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  2. 四十六、android中的Bitmap

    四十六.android中的Bitmap: http://www.cnblogs.com/linjiqin/archive/2011/12/28/2304940.html 四十七.实现调用Android ...

  3. Android简易实战教程--第四十六话《RecyclerView竖向和横向滚动》

    Android5.X后,引入了RecyclerView,这个控件使用起来非常的方便,不但可以完成listView的效果,而且还可以实现ListView无法实现的效果.当然,在新能方便也做了大大的提高. ...

  4. “全栈2019”Java第四十六章:继承与字段

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  5. 第四十六个知识点 在Sigma协议中,正确性,公正性和零知识性意味着什么

    第四十六个知识点 在Sigma协议中,正确性,公正性和零知识性意味着什么 Sigma协议 Sigma协议是Alice想要向Bob证明一些东西的协议(Alice知道一些秘密).他们有下面的一般范式:Al ...

  6. Python笔记(四):异常处理机制与 open()

    (一)  异常处理机制概述 就像日常生活中会遇到各种意外情况一样(例如:你可能考虑过如果中了500w该怎么做),代码运行过程中也会遇到这种意外情况,python提供了这么一种机制,处理意外情况(就像如 ...

  7. abp(net core)+easyui+efcore实现仓储管理系统——入库管理之十(四十六)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  8. Deep learning:四十六(DropConnect简单理解)

    和maxout(maxout简单理解)一样,DropConnect也是在ICML2013上发表的,同样也是为了提高Deep Network的泛化能力的,两者都号称是对Dropout(Dropout简单 ...

  9. Python之路(第四十六篇)多种方法实现python线程池(threadpool模块\multiprocessing.dummy模块\concurrent.futures模块)

    一.线程池 很久(python2.6)之前python没有官方的线程池模块,只有第三方的threadpool模块, 之后再python2.6加入了multiprocessing.dummy 作为可以使 ...

随机推荐

  1. jQuery prop方法替代attr方法

    jquery attr()方法获取标签的 checked 会有问题,所以用了 prop() 方法.

  2. UE4 Animation]IK Related

    转自:https://dawnarc.com/2018/05/ue4animationik-related/ Examples 工程1 在油管上看到一个UE4 IK动画的demo工程示例 该示例作者的 ...

  3. 如何在jupyter中使用Python2和Python3

    首先通过 pip2 install ipython notebook pip3 install ipython notebook 分别安装ipython notebook,安装命令还是推荐使用国内的豆 ...

  4. Oracle Spatial分区应用研究之七:同等分区粒度下全局索引优于分区索引的原因分析

    1.实验结论 同等分区粒度下,使用分区空间索引进行空间查询,比使用全局空间索引进行查询,对数据字典表的访问次数更多.假设分区数为X,则大概多3X次访问.具体说明见6实验结论. 2.实验目的 在之前的测 ...

  5. Linux内核参数详解

    所谓Linux服务器内核参数优化(适合Apache.Nginx.Squid等多种web应用,特殊的业务有可能需要做略微调整),主要是指在Linux系统中针对业务服务应用而进行的系统内核参数调整,优化并 ...

  6. static binding/dynamic binding

    static binding/dynamic binding class Person { private void who() { System.out.println("Inside p ...

  7. RestTemplate的使用和原理你都烂熟于胸了吗?【享学Spring MVC】

    每篇一句 人圆月圆心圆,人和家和国和---中秋节快乐 前言 在阅读本篇之前,建议先阅读开山篇效果更佳.RestTemplate是Spring提供的用于访问Rest服务的客户端工具,它提供了多种便捷访问 ...

  8. gtest入门

    介绍 gtest是谷歌开发的用来做C++单元测试的测试框架 基本概念 使用gtest,你就需要写断言(assertions),用来检查一个表达式是否为true.断言的结果有三个:正确.非致命错误.致命 ...

  9. [译] QUIC Wire Layout Specification - Frame Types and Formats | QUIC协议标准中文翻译(4) 帧类型和格式

    欢迎访问我的个人网站获取更好的阅读排版体验: [译] QUIC Wire Layout Specification - Frame Types and Formats | QUIC协议标准中文翻译(4 ...

  10. 【LEETCODE】70、字符匹配1023 Camelcase Matching

    最近做leetcode总感觉自己是个智障,基本很少有题能自己独立做出来,都是百度... 不过终于还是做出了一题...而且速度效率还可以 哎,加油吧,尽量锤炼自己 package y2019.Algor ...