C++(四十六) — 异常处理机制、标准IO输入输出

1、异常处理机制

  一般来说,异常处理就是在程序运行时对异常进行检测和控制。而在C++ 中,使用 try-throw-catch模式进行异常处理的机制。

#include<iostream>
using namespace std;

int Fib(int n)
{
    if (n <= 0)
        throw n;
    if (n >= 47)
        throw "n>=47 overflow";
    if (n == 1 || n == 2)
        return 1;
    else
        return Fib(n - 1) + Fib(n - 2);
}

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[256], buf2[256];
    cin >> buf1;//只保存第一个,遇到空格即停止
    cin.getline(buf2, 256);//保存空格,遇到 换行符 即停止。

    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:十进制、十六进制、八进制

 

posted @ 2019-06-07 20:29  深度机器学习  阅读(498)  评论(0编辑  收藏  举报