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;