C/C++函式庫的運用
sstream - 讀取一行不知道有多少個的數字
sstream當中的istringstream物件,可以以近似於cin的方式來讀取一個string變數內含的資料。
sstream的意義為string stream,也就是說,把string變數看待成stream。至於istringstream的i,應該就是指input之意吧。
下面的程式可以讀入一行不知道個數為多少個的數字,並輸出這些數字的總和。
sstream - 讀取不知道有多少行的輸入、並且做tokenize
cstdio - 數字轉字串,字串轉數字
C的標準函式庫提供了兩個非常好用的函式,可以快速的轉換字串成為數值。
UVa 10427
cassert - 檢查程式有沒有問題
cassert當中的assert()可以用來檢查程式中的變數數值正不正確。
在程式執行的期間,一旦執行至assert()的地方,若是assert()括號之中的敘述句不成立,就會跳出程式有問題的視窗。若沒有跳出任何程式有問題的視窗,就意味著程式成功的通過了所有assert()的檢查。
下面的這段程式碼利用了assert(),藉以檢查queue的運算是否如預期所料。
typeinfo - 印出變數型態的名稱
利用typeid(變數).name這個語法,可以得到該變數的變數型態。如果該變數是一個物件,則會得到該物件所屬的class名稱。範例程式碼如下所示:
此程式執行的結果如下:
iostream - 八、十、十六進位數的輸出入
就算使用者輸入ABC或abc(十六進位表示法),compiler還是可以將之轉換成十進位數字,存到num裡面。
十六進位時,輸入的數字有0x或0X開頭也可以(不要把0打成英文字母o或O了)。
附帶一提,因為iomanip已經建好了hex oct dec等關鍵字,所以用setiosflags(ios::hex)是沒有任何效果的。【有待商榷】
就算使用者輸入2e3(科學記號表示法),compiler還是可以將之轉換成十進位數字,存到num裡面。
UVa 537
string cstring - 字串運算
一、讀字串,直到遇見空白、換行為止。
二、讀字串,直到一定數量,或者遇見空白、換行為止。
三、讀一行。
四、讀到特定字元為止。
五、交換。
六、長度。
七、比大小。
八、字串後面接字串。
ctime - 計時
ctime - 亂數
algorithm - 排序
sort()為Quick Sort,stable_sort()為Merge Sort。
排序基本資料型態的方法。
排序自訂資料型態的方法有兩種寫法。
climits - 變數的極值
CHAR_BIT char變數的記憶體大小(bits) 8 MB_LEN_MAX 一個字元的記憶體大小(byte) 1(英文系統) 2(中文系統) SCHAR_MIN 有號char變數的下限值 -128 SCHAR_MAX 有號char變數的上限值 127 UCHAR_MAX 無號char變數的上限值 255 CHAR_MIN char變數的下限值 -128 或 0 CHAR_MAX char變數的上限值 127 或 255 SHRT_MIN short int變數的下限值 -32768 SHRT_MAX short int變數的上限值 32767 USHRT_MAX 無號short int變數的上限值 65535 INT_MIN int變數的下限 -2147483648 INT_MAX int變數的上限值 2147483647 UINT_MAX 無號int變數的上限值 4294967295 LONG_MIN long int變數的上限值 -2147483648 LONG_MAX long int變數的下限值 2147483647 ULONG_MAX 無號long int變數的下限值 4294967295
附帶一提< limits.h >和< climits >是屬於C的函式庫,C++另有推出< limits >。
UVa 465
VC++和gcc同時能使用long long的方法