天天看點

C/C++常用标準庫函數

标準的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

                        };