1.异常
try{
if (true)
{
throw 1; }}
catch (int)
{
cout << "捕获int类型异常" << endl; }
使用throw 可以继续向上抛出异常 catch (...) 表示捕获任意类型异常
2.捕获自定义异常
1.MyError会执行拷贝构造 2.void func throw(int,float) 只抛出int float 类型异常 throw () 不泡出异常
class MyError
{public:
void printError()
{
cout<<"自己的异常"<<endl; }};
int main(void) {
try
{}catch (MyError e)
{
e.printError; }
3.所以使用 MyError &e ,比较好 只创建一个对象
3.系统异常
使用 what() 方法 打印出 错误信息
try
{
throw out_of_range("越界了");
}
catch (out_of_range &e)
{
e.what();
}
4.自定义异常
1.继承exception 类 重写 虚析构函数 , 虚what() 函数 输出异常信息 重写构造接受异常信息
2.调用时,抛出自定义异常传入异常信息 3.捕获异常信息 时,使用e.what() 输出异常信息
class MyError : public std::exception
{
public:
MyError(string str)
{
this->info = str;
};
virtual ~MyError()
{
};
virtual const char* what() const
{
return this->info.c_str();
};
string info;
};
int main(void) {
try
{
throw MyError("dada");
}
catch (MyError& e)
{
cout << e.what() << endl; }}
5.标准输入输出
1. cin.get() 接受一个字符 如果输入 ab ,那么 a = a , b=b c=\n
int main(void) {
char a= cin.get();
char b=cin.get();
char c=cin.get(); }
2. char buff[1024]; cin.get(buff,1024); 将输入 指定数组大小的字符数组中 3.cin.getline(buff,1024) 切割换行扔掉换行
4.cin.ignore() 忽略一个字符 cin.ignore(2) 忽略2个字符输入 5.cin.peek() 查看一个输入字符
6. char a = cin.get();cin.putback(a); 把输入字符返回缓冲区
7. cin.fail() 查看标志位 cin.clean 重置标志位 cin.sync(); 清空缓冲区
6.文件输入输出
打开方式 1. ios::out 以输出方式,如果存在则清空 文件内容 2.ios::in 以输入方式
3.ios::app 以输出追加方式写入文件 4.ios::out | ios::binary 二进制打开一个输出文件
5.ios::in | ios::binary 二进制打开一个输入文件
ofstream ofs;
ofs.open("./a.txt",ios::out);
if (!ofs.is_open())
{
cout << "打开失败!" << endl;
}
ofs << "abc" << endl;
ofs << "wyc" << endl;