1.異常在類層次間的使用
//案例:設計乙個陣列類 myarray,過載操作,
// 陣列初始化時,對陣列的個數進行有效檢查
// index<0 丟擲異常enegative
// index = 0 丟擲異常 ezero
// 3)index>1000丟擲異常etoobig
// 4)index<10 丟擲異常etoosmall
// 5)esize類是以上類的父類,實現有引數構造、並定義virtual void printerr()輸出錯誤。
#include using namespace std;
class myarray
virtual void printerr() = 0;
protected:
int size;
}; class enegative:public esize
virtual void printerr()
};class ezero:public esize
virtual void printerr()
};class etoobig:public esize
virtual void printerr()
};class etoosmall:public esize
virtual void printerr()
};};myarray::myarray(int len)
int main()
catch (myarray::esize &e)
return 0;
}
2.標準異常庫
#include #include using namespace std;
class myexception:public exception
virtual const char * what() const
private:
char *msg; // 存異常資訊
};class student
private:
int age;
};int main()
catch (exception &e)
return 0;
}
3。標準輸入流
#include using namespace std;
int main1()
int main2()
cout << "空格: " << count_space << endl;
cout << "字母: " << count_letter << endl;
cout << "數字: " << count_num << endl;
return 0;
}int main3()
// cin.ingore(n) 忽略緩衝區中n個字元
int main4()
int main()
4.檔案輸入輸出流
#include #include using namespace std;
// 寫檔案
void func1()
// 讀檔案
void func2()
fin.ignore(4);
int a;
fin >> a;
cout << a << endl;
//char ch;
//while ((ch=fin.get()) != eof)
// cout << ch;
fin.close();
}// 二進位制檔案讀寫
class student
void show()
private:
int id;
char name[20];
};// 寫 二進位制檔案
void func3()
// 讀二進位制檔案
void func4()
fin.close();
}int main()
5.演算法容器迭代器
#include #include #include using namespace std;
void func()
while (it != v.end())
// 演算法:運算元據
// 1、排序
sort(v.begin(), v.end());
cout << "排序後:" << endl;
it = v.begin();
while (it != v.end())
reverse(v.begin(), v.end());
cout << "逆序後:" << endl;
it = v.begin();
while (it != v.end()) }
int main()
6,string#include #include #include using namespace std;
// string 的構造
void func1()
// 2、string 的遍歷
void func2()
cout << endl;
// 4、 和 at 函式的區別
// 如果訪問越界,終止程式執行,不會丟擲異常
// at 如果訪問越界,會丟擲乙個異常
trycatch(exception &e) }
// 3、string 和 char *的轉換
void func3()
// 4、字串的連線、拷貝、比較
void func4()
; s1.copy(str, 6, 1);
cout << str << endl;
if (s1 == s2)
cout << "s1 == s2" << endl;
else
cout << "s1 != s2" << endl;
}// 5、查詢和替換
void func5()
cout << s1 << endl;
}// 6、刪除和插入
void func6()
// 7、可以用演算法函式操作字串
void func7()
void func8()
reverse(s.begin()+begin, s.end());
cout << s << endl;
}int main()
day9 函式基礎知識,裝飾器
個人理解裝飾器 無參裝飾器 功能用來拓展函式 為原函式新增其他功能 原則 1 原始碼不動 2 呼叫方式不變 1 既要新增新功能又要保持原函式 不變,那麼只能重新寫乙個函式 以outer函式為例 將原函式傳入outer函式中,然後在outer函式中新增新功能拓展函式,函式的呼叫巢狀 2 但是有要求呼叫...
pwn學習日記Day9 基礎知識積累
if up n and c 接收到的上乙個字元為回車符,而當前接收不到新字元,則 buf buf 1 刪除puts函式輸出的末尾回車符 buf x00 breakputs輸出完後還有其他輸出 if up n and c x 一定要找到洩漏資訊的字串特徵 data buf 1 data x00 bre...
C 基礎程式設計DAY9
寫乙個函式,取乙個整數值並返回此整數的各數字反序的數值 include include using namespace std int reverse m1 int x else if x 9 x 100 else if x 99 x 1000 else int reverse m2 int x e...