标準的C++庫中的内容主要包括:
(1)基本運作時語言支援
(2)C語言标準庫
(3)字元串和輸入輸出流
(4)标準容器和算法
(5)對數制計算的支援
》數學函數
數學函數在頭檔案<cmath>中被聲明,調用前應在源程式檔案中加入預處理指令:#include<cmath>
(1)三角函數
# acos
原型:double acos(double x);
說明:計算參數x的反餘弦值。x的取值範圍是[-1,+1]。
傳回:以弧度為機關的反餘弦值,取值範圍是[0,π]。
# asin
原型:double asin(double x);
說明:計算參數x的反正弦值。x的取值範圍是[-1,+1]。
傳回:以弧度為機關的反正弦值,取值範圍是[-π/2,+π/2]。
# atan
原型:double atan(double x);
說明:計算參數x的反正切值。
傳回:以弧度為機關的反正切值,取值範圍是[-π/2,+π/2]。
# atan2
原型:double atan2(double y,double x);
說明:計算y/x的反正切值,并利用兩個參數的正負号決定傳回值的象限。x,y不能同時取0。
傳回:以弧度為機關的反正切值,取值範圍是[-π,+π]。
# cos
原型:double cos(double x);
說明:計算參數x的餘弦值。以x為弧度機關。
傳回:餘弦值。
# sin
原型:double sin(double x);
說明:計算參數x的正弦值。以x為弧度機關。
傳回:正弦值。
# tan
原型:double tan(double x);
說明:計算參數x的正切值。以x為弧度機關。
傳回:正切值。
(2)雙曲函數
# cosh
原型:double cosh(double x);
說明:計算參數x的雙曲餘弦值。
傳回:雙曲餘弦值。
# sinh
原型:double sinh(double x);
說明:計算參數x的雙曲正弦值。
傳回:雙曲正弦值。
# tanh
原型:double tanh(double x);
說明:計算參數x的雙曲正切值。
傳回:雙曲正切值。
(3)指數和對數函數
# exp
原型:double exp(double x);
說明:計算參數x的指數函數e^x。
傳回:指數函數值。
# frexp
原型:double frexp(double value,int* exp);
說明:将value分解為尾數x和以2為底的指數n,即value=x*2^n。指數n被存放在整型指針exp所指的變量中。
傳回:尾數值x,x的取值範圍是[1/2,1]或0。如果value等于0,則尾數x和指數n都傳回0。
# ldexp
原型:double ldexp(double x,int exp);
說明:計算參數x與2的exp次幂的乘積。
傳回:結果值y,其中y=x*2^exp。
# tanh
原型:double tanh(double x);
說明:計算參數x的雙曲正切值。
傳回:雙曲正切值。
# log
原型:double log(double x);
說明:計算參數x的自然對數ln x,x的取值範圍是x>0。
傳回:自然對數值。
# log10
原型:double log10(double x);
說明:計算參數x的以10為底的對數lg x,x的取值範圍是x>0。
傳回:以10為底的對數值
# modf
原型:double modf(double value,double* iptr);
說明:将value分解為整數部分和小數部分,兩部分的正負号都與value相同。整數部分作為double型值被存放在指針iptr所指的變量中。
傳回:value的小數部分。
(4)幂函數
# pow
原型:double pow(double x,double y);
說明:計算參數x的y次幂,即x^y。
傳回:x^y的值。
# sqrt
原型:double sqrt(double x);
說明:計算參數x的平方根,x的取值範圍是x>=0。
傳回:平方根值。
(5)其他函數
# ceil
原型:double ceil(double x);
說明:計算不小于參數x的最小整數。
傳回:以double類型表示的不小于x的最小整數值。
# fabs
原型:double fabs(double x);
說明:計算參數x的絕對值。
傳回:絕對值。
# fmod
原型:double fmod(double x,double y);
說明:計算x除以y所得的餘數。
傳回:以double類型表示的餘數值。
》字元函數
字元函數在頭檔案<cctype>中被聲明,調用前應在源程式檔案中加入預處理指令:#include<cctype>
(1)字元測試函數
這組函數的傳回值規定如下:如果參數滿足函數說明中描述的條件,則函數傳回非零值;否則,函數傳回0。
# isalnum
原型:int isalnum(int c);
說明:測試參數c是否為字母(包括大小寫)或數字。
# isalpha
原型:int isalpha(int c);
說明:測試參數c是否為字母(包括大小寫)。
# iscntrl
原型:int iscntrl(int c);
說明:測試參數c是否為控制字元(ASCII碼0~31,127)。
# isdigit
原型:int isdigit(int c);
說明:測試參數c是否為數字('0','1',...,'9')。
# isgraph
原型:int isgraph(int c);
說明:測試參數c是否為不包括空格在内的可列印字元(ASCII碼33~126)。
# islower
原型:int islower(int c);
說明:測試參數c是否為小寫字母('a','b',...,'z')。
# isprint
原型:int isprint(int c);
說明:測試參數c是否為可列印字元(包括空格,即ASCII碼32~126)或數字。
# ispunct
原型:int ispunct(int c);
說明:測試參數c是否為不包括空格、字母和數字在内的可列印字元。(即ASCII碼33~47,58~64,91~96,123~126)。
# isspace
原型:int isspace(int c);
說明:測試參數c是否為空白字元。在C++語言中空白字元是指:空格(' ')、換頁('\f')、換行('\n')、回車(‘\r’)、水準制表('\t')和垂直制表(‘\v’)。
# isupper
原型:int isupper(int c);
說明:測試參數c是否為大寫字母('A','B',...,'Z')。
# isxdigit
原型:int isxdigit(int c);
說明:測試參數c是否為16進制數字('0'~'9',‘a’~'f','A'~'F')。
(2)字母大小寫轉換函數
# tolower
原型:int tolower(int c);
說明:将一個大寫字母轉換為與之對應的小寫字母。
傳回:如果參數c是一個大寫字母(即c使函數isupper成立),則傳回與其對應的小寫字母(即傳回值使函數islower成立);否則,傳回參數c(即不改變c的值)。
# toupper
原型:int toupper(int c);
說明:将一個小寫字母轉換為與之對應的大寫字母。
傳回:如果參數c是一個小寫字母(即c使函數islower成立),則傳回與其對應的大寫字母(即傳回值使函數isupper成立);否則,傳回參數c(即不改變c的值)。
》字元串函數
字元串函數在頭檔案<cstring>中被聲明,調用前應在源程式檔案中加入預處理指令:#include<cstring>
<cstring>聲明了類型size_t,可以将size_t了解成無符号整型;
#define unsigned int size_t
(1)複制函數
# strcpy
原型:char* strcpy(char* p,const char* q);
說明:将q指向的字元串(包括結尾的空字元)複制到p指向的字元數組中。
傳回:字元指針p的值。
# strncpy
原型:char* strncpy(char* p,const char* q,size_t n);
說明:将q指向的字元串中不多于前n個字元(空字元之後的字元不會被拷貝)拷貝到p指向的字元數組中。如果q指向的字元串中字元的個數小于n,則将空字元添加到p指向的字元數組中拷貝的結尾,直接寫入p中的字元個數達到n。
傳回:字元指針p的值。
(2)連接配接函數
# strcat
原型:char* strcat(char* p,const char* q);
說明:将q指向的字元串的一個拷貝(包括結尾的空字元)連接配接到p指向的字元串結尾。q的首字元會覆寫p結尾的空字元。
傳回:字元指針p的值。
# strncat
原型:char* strncat(char* p,const char* q,size_t n);
說明:将q指向的字元串中不多于前n個字元(空字元及其之後的字元不會被連接配接)連接配接到p指向的字元串結尾。q的首字元會覆寫p結尾的空字元。函數總會在結果字元串p的末尾添加一個空字元。
傳回:字元指針p的值。
(3)比較函數
# strcmp
原型:int strcmp(const char* p,const char* q);
說明:将p指向的字元串與q指向的字元串進行比較。
傳回:如果p<q,則傳回負整數;如果p=q,則傳回0;如果p>q,則傳回正整數。
# strncmp
原型:int strncmp(const char* p,const char* q,size_t n);
說明:在p指向的字元串中查找第一次出現字元c(将參數c由int型轉換為char型)的位置。結尾的空字元被認為是字元串的一部分。
傳回:如果p<q,則傳回負整數;如果p=q,則傳回0;如果p>q,則傳回正整數。
(4)查找函數
# strchr
原型:char* strchr(const char* p,int c);
說明:在p指向的字元串中查找第一次出現字元c(将參數c由int型轉換為char型)的位置。結尾的空字元被認為是字元串的一部分。
傳回:如果找到字元c,則傳回指向它的指針;否則,傳回空指針。
# strrchr
原型:char* strrchr(const char* p,int c);
說明:在p指向的字元串中查找最後一次出現字元c(将參數c由int型轉換為char型)的位置。結尾的空字元被認為是字元串的一部分。
傳回:如果找到字元c,則傳回指向它的指針;否則,傳回空指針
# strstr
原型:char* strstr(const char* p,const char* q);
說明:在p指向的字元串中查找第一次出現q指向的字元串中字元序列(不包括結尾的空字元)的位置。
傳回:如果找到字元序列q,則傳回指向它的指針;否則,傳回空指針。如果q指向一個長度為0的字元串,則函數傳回指針p的值。
# strpbrk
原型:char* strpbrk(const char* p,const char* q);
說明:在p指向的字元串中查找第一次出現q指向的字元串中任何字元的位置。
傳回:如果在p中找到q中含有的任何字元,則傳回指向該字元的指針;否則,傳回空指針。
# strspn
原型:size_t strspn(const char* p,const char* q);
說明:在p指向的字元串中查找第一個與q指向的字元串中所有字元都不相同的字元下标。
傳回:該字元下标值。
# strcspn
原型:size_t strcspn(const char* p,const char* q);
說明:在p指向的字元串中查找第一個與q指向的字元串中所有字元都相同的字元下标。
傳回:該字元下标值。
(5)其他函數
# strlen
原型:size_t strlen(const char* p);
說明:計算p指向的字元串的長度。
傳回:出現在結尾空字元之前的字元個數。
》一般工具函數
一般工具函數在頭檔案<cstdlib>中被聲明,調用前應在源程式檔案中加入預處理指令:#include<cstdlib>
(1)字元串轉換函數
# atof
原型:double atof(const char* p);
說明:将p指向的字元串轉換為double型數值。
傳回:轉換後的double型數值。
# atoi
原型:int atoi(const char* p);
說明:将p指向的字元串轉換為int型數值。
傳回:轉換後的int型數值。
# atol
原型:long atol(const char* p);
說明:将p指向的字元串轉換為long int型數值。
傳回:轉換後的long int型數值。
(2)僞随機數序列産生函數
# rand
原型:int rand();
說明:計算0到RAND_MAX範圍内的僞随機整數序列。RAND_MAX至少應等于32767。
傳回:一個僞随機整數值。
# srand
原型:void srand(unsigned int seed);
說明:使用參數seed的值作為接下來調用函數rand産生的僞随機數序列的種子。
傳回:無傳回值。
(3)記憶體管理函數
在C++語言中應用new和delete運算符來進行記憶體管理操作。但為了與C語言相容,标準C++庫中仍保留了malloc,calloc,realloc,free等函數。
# malloc
原型:void* malloc(size_t s);
說明:配置設定一塊大小為s個位元組的記憶體空間。
傳回:如果配置設定成功,則傳回指向這塊記憶體空間的指針;如果配置設定失敗,則傳回空指針。
# calloc
原型:void* calloc(size_t n,size_t s);
說明:配置設定n個資料項的記憶體空間,每個資料項的大小為s個位元組。
傳回:如果配置設定成功,則傳回指向這塊記憶體空間的指針;如果配置設定失敗,則傳回空指針。
# realloc
原型:void* realloc(void* p,size_t s);
說明:将p指向的記憶體空間的大小改變為s個位元組。
傳回:如果配置設定成功,則傳回指向改變大小後的記憶體空間的指針;如果配置設定失敗,則傳回空指針。
# free
原型:void free(void* p);
說明:将p指向的記憶體空間釋放。
傳回:無傳回值。
(4)與系統通信的函數
# abort
原型:void abort();
說明:将程式非正常終止。
傳回:此函數不能再傳回它的調用者。
# exit
原型:void exit(int status);
說明:将程式正常終止,并把狀态值status傳回給作業系統。
傳回:此函數不能再傳回它的調用者。
# getenv
原型:char* getenv(const char* name);
說明:在作業系統提供的環境變量清單中查找與name指向的字元串比對的環境變量。
傳回:如果找到該環境變量,則傳回指向其值的字元指針;否則,傳回空指針。
# system
原型:int system(const char* str);
說明:将str指向的字元串作為作業系統指令執行。
傳回:如果參數str是空指針,則當指令處理程式存在時函數傳回非零值。如果參數str不是空指針,則函數傳回一個由編譯器定義的數值。
(5)搜尋和排序函數
# bsearch
原型:void* bsearch(const void* key,const void* base,size_t nmenb,size_t size,int(* cmp)(const void*,const void*));
說明:base指向含有nmemb個資料項的數組的首元素,size指明數組中每個元素的長度,key指向要搜尋的關鍵資料項,cmp是指向比較函數的指針。本函數使用二分法在base指向的數組中搜尋與關鍵資料項key比對的元素。
傳回:如果搜尋到比對元素,則傳回指向該元素的指針;如果未找到比對元素,則傳回空指針。
# qsort
原型:void qsort(void* base,size_t nmemb,size_t size,int(*cmp)(const void*,const void*));
說明:base指向含有nmemb個資料項的數組的首元素,size指明數組中每個元素的長度,cmp是指向比較函數的指針。本函數使用快速排序法對base指向的數組中的元素進行排序。
傳回:無傳回值。
(6)整數算術函數
# abs
原型:int abs(int n);
說明:計算整數n的絕對值。
傳回:絕對值。
# labs
原型:long labs(long n);
說明:除了參數和傳回值類型為long int外,其餘與函數abs相同。
傳回:絕對值。
# div
原型:div_t div(int n,int d);
說明:計算n除以d(n/d)所得的商和餘數。設商為quot,餘數為rem,則
n=quot*d+rem;
成立。
傳回:一個類型為div_t的結構,其中包含商和餘數。div_t的定義如下:
struct div_t{
int quot; //quotient
int rem; //remainder
};
# ldiv
原型:ldiv_t ldiv(long int n,long int d);
說明:除了參數類型為long int,傳回值類型為ldiv_t之外,其餘與函數div相同。
傳回:一個類型為ldiv_t的結構,其中包含商和餘數。ldiv_t的定義如下:
struct ldiv_t{
long int quot; //quotient
long int rem; //remainder
};