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的方法