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;

 

 

 

 

 

 

 

 

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