c++ 基础 四 异常 输入 输出流

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;

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章