栈溢出的异常处理
【问题描述】
下面程序定义栈类模板StackTemplate,创建栈对象存储斐波那契数列的前10项数值,并以后进先出的方式取出元素并输出,输出结果为:55 34 21 13 8 5 3 2 1 1。其中void push(const T& i)函数为添加元素、T pop()函数为取出栈顶元素,int fibonacci(int n)函数为计算斐波那契数列的第n项值。在计算斐波那契数列值、添加元素和取出元素的过程中要进行上溢OverFlow或者下溢UnderFlow的异常处理。
【样例输入】
无
【样例输出】
55 34 21 13 8 5 3 2 1 1
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889#include <iostream>#include < ...
分类页基础美化
在Blog根目录\source\css\custom.css(缺少的文件/文件夹直接新建)新增如下样式:
12345678910111213141516171819202122/* 分类页样式 began */.category-list-link:hover{ transform: scale(1.1); box-shadow: 10px 10px 15px 2px rgba(0,0,0,.12), 0 0 6px 0 rgba(104, 104, 105, 0.1); border-radius: 15px; padding: 6px 16px; margin-left: 0px; font-size: 16px; transition-duration: 0.15s; //display:flex;}a.category-list-link:before{ top: 10px; width: 18px; height: 18px; content: "📚"; margin-right: 5px; fo ...
c++异常详解
生命周期异常在被调函数中触发,不断传向下一级主调函数,直到被捕获
ps:若异常无法被捕获,程序会调用库函数terminate,由库函数调用abort函数终止程序
关键字1. throwthrow + 表达式:抛出异常
ps:表达式可以是数据,也可以是函数(必须有返回值)
2. try + catchps:catch (...)表示通用捕获,任何异常均可捕获,但是无法获取异常的值,一般放在所有catch最后
注:catch (基类异常)可以捕获派生类异常,若基类异常和派生类异常同存,一般将基类异常的捕获放在后面
123456789101112try{ ...}catch (exception &e){ ...}catch (...){ ...}
实例除零异常分析:try块处理了三个除法(15~17行);第二个除法除数为0,divide抛出被除数8被捕获并打印异常信息
ps:try当中抛出异常后的语句无法执行,对应第三个除法(17行)
12345678910111213141516171819202122232 ...
c++文件流操作
头文件12#include <iostream>#include <fstream>
open()函数open() 成员函数用于打开文件
参数12void open(const char *filename, ios::openmode mode);// 第一参数指定要打开的文件的名称和位置(直接写文件名表示是在与cpp同级文件夹操作),第二个参数定义文件被打开的模式
模式标志
描述
ios::app
追加模式。所有写入都追加到文件末尾。
ios::ate
文件打开后定位到文件末尾。
ios::in
打开文件用于读取。
ios::out
打开文件用于写入。
ios::trunc
如果该文件已经存在,其内容将在打开文件之前被截断,即把文件长度设为 0。
实例12345678910111213141516171819202122232425262728293031323334353637#include <iostream>#include <fstream>using namespace std;in ...
流操作实现字符串与数字相互转换
前言c++课学到的,超级实用~支持各种类型的数字与字符串之间的转换,下面以int和double类型举例
头文件12#include <iostream>#include <sstream>
模板函数数字->字符串的模板函数:
1234567template <class T>inline string toString(T data) // inline: 内联函数{ ostringstream os; // 定义字符串输出流对象存储数字 os << data; return os.str();}
字符串->数字的模板函数:
12345678template <class T>inline T toNum(const string str){ T data; istringstream is(str); // 定义字符串输入流对象并存入字符串 is >> data; return data;}
实例123456789101112131415161718192021 ...