教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢(xún)/投訴熱線(xiàn):400-618-4000

c/c++培訓(xùn)之C語(yǔ)言常用字符串接口總結(jié)

更新時(shí)間:2016年08月01日09時(shí)34分 來(lái)源:傳智播客C/C++學(xué)科 瀏覽次數(shù):

《C語(yǔ)言常用字符串接口總結(jié)》
 

1)字符串操作


strcpy(p, p1) 復(fù)制字符串 
strncpy(p, p1, n) 復(fù)制指定長(zhǎng)度字符串 
strcat(p, p1) 附加字符串 
strncat(p, p1, n) 附加指定長(zhǎng)度字符串 
strlen(p) 取字符串長(zhǎng)度 
strcmp(p, p1) 比較字符串 
strcasecmp忽略大小寫(xiě)比較字符串
strncmp(p, p1, n) 比較指定長(zhǎng)度字符串 
strchr(p, c) 在字符串中查找指定字符 
strrchr(p, c) 在字符串中反向查找 
strstr(p, p1) 查找字符串 
strpbrk(p, p1) 以目標(biāo)字符串的所有字符作為集合,在當(dāng)前字符串查找該集合的任一元素 
strspn(p, p1) 以目標(biāo)字符串的所有字符作為集合,在當(dāng)前字符串查找不屬于該集合的任一元素的偏移 
strcspn(p, p1) 以目標(biāo)字符串的所有字符作為集合,在當(dāng)前字符串查找屬于該集合的任一元素的偏移  
* 具有指定長(zhǎng)度的字符串處理函數(shù)在已處理的字符串之后填補(bǔ)零結(jié)尾符 
 

2)字符串到數(shù)值類(lèi)型的轉(zhuǎn)換


strtod(p, ppend) 從字符串 p 中轉(zhuǎn)換 double 類(lèi)型數(shù)值,并將后續(xù)的字符串指針存儲(chǔ)到 ppend 指向的 char* 類(lèi)型存儲(chǔ)。
strtol(p, ppend, base) 從字符串 p 中轉(zhuǎn)換 long 類(lèi)型整型數(shù)值,base 顯式設(shè)置轉(zhuǎn)換的整型進(jìn)制,設(shè)置為 0 以根據(jù)特定格式判斷所用進(jìn)制,0x, 0X 前綴以解釋為十六進(jìn)制格式整型,0    前綴以解釋為八進(jìn)制格式整型
atoi(p) 字符串轉(zhuǎn)換到 int 整型 
atof(p) 字符串轉(zhuǎn)換到 double 符點(diǎn)數(shù) 
atol(p) 字符串轉(zhuǎn)換到 long 整型 
 

3)字符檢查


isalpha() 檢查是否為字母字符 
isupper() 檢查是否為大寫(xiě)字母字符 
islower() 檢查是否為小寫(xiě)字母字符 
isdigit() 檢查是否為數(shù)字 
isxdigit() 檢查是否為十六進(jìn)制數(shù)字表示的有效字符 
isspace() 檢查是否為空格類(lèi)型字符 
iscntrl() 檢查是否為控制字符 
ispunct() 檢查是否為標(biāo)點(diǎn)符號(hào) 
isalnum() 檢查是否為字母和數(shù)字 
isprint() 檢查是否是可打印字符 
isgraph() 檢查是否是圖形字符,等效于 isalnum() | ispunct() 
 

4)函數(shù)原型


原型:strcpy(char destination[], const char source[]); 
功能:將字符串source拷貝到字符串destination中 
例程:  
 #include <iostream.h> 
#include <string.h> 
void main(void) 

  char str1[10] = { "TsinghuaOK"}; 
  char str2[10] = { "Computer"}; 
  cout <<strcpy(str1,str2)<<endl; 
}
運(yùn)行結(jié)果是:Computer 
第二個(gè)字符串將覆蓋掉第一個(gè)字符串的所有內(nèi)容! 
注意:在定義數(shù)組時(shí),字符數(shù)組1的字符串長(zhǎng)度必須大于或等于字符串2的字符串長(zhǎng)度。不能用賦值語(yǔ)句將一個(gè)字符串常量或字符數(shù)組直接賦給一個(gè)字符數(shù)組。所有字符串處理函數(shù)都包含在頭文件string.h中。

strncpy(char destination[], const char source[], int numchars);
strncpy:將字符串source中前numchars個(gè)字符拷貝到字符串destination中。 
strncpy函數(shù)應(yīng)用舉例 
原型:strncpy(char destination[], const char source[], int numchars); 
功能:將字符串source中前numchars個(gè)字符拷貝到字符串destination中 
例程: 
#include <iostream.h> 
#include <string.h> 
void main(void) 

  char str1[10] = { "Tsinghua "}; 
  char str2[10] = { "Computer"}; 
  cout <<strncpy(str1,str2,3)<<endl; 
}
運(yùn)行結(jié)果:Comnghua 
注意:字符串source中前numchars個(gè)字符將覆蓋掉字符串destination中前numchars個(gè)字符!
原型:strcat(char target[], const char source[]); 
功能:將字符串source接到字符串target的后面 
例程: 
#include <iostream.h> 
#include <string.h> 
void main(void) 

  char str1[] = { "Tsinghua "}; 
  char str2[] = { "Computer"}; 
  cout <<strcpy(str1,str2)<<endl; 
}
運(yùn)行結(jié)果:Tsinghua Computer
注意:在定義字符數(shù)組1的長(zhǎng)度時(shí)應(yīng)該考慮字符數(shù)組2的長(zhǎng)度,因?yàn)檫B接后新字符串的長(zhǎng)度為兩個(gè)字符串長(zhǎng)度之和。進(jìn)行字符串連接后,字符串1的結(jié)尾符將自動(dòng)被去掉,在結(jié)尾串末尾保留新字符串后面一個(gè)結(jié)尾符。 
原型:strncat(char target[], const char source[], int numchars); 
功能:將字符串source的前numchars個(gè)字符接到字符串target的后面 
例程:
#include <iostream.h> 
#include <string.h> 
void main(void) 

  char str1[] = { "Tsinghua "}; 
  char str2[] = { "Computer"}; 
  cout <<strncat(str1,str2,3)<<endl; 
}
運(yùn)行結(jié)果:Tsinghua Com

原型:int strcmp(const char firststring[], const char secondstring); 
功能:比較兩個(gè)字符串firststring和secondstring 
例程: 
#include <iostream.h> 
#include <string.h> 
void main(void) 

  char buf1[] = "aaa"; 
  char buf2[] = "bbb"; 
  char buf3[] = "ccc"; 
  int ptr;  
  ptr = strcmp(buf2,buf1);  
  if(ptr > 0) 
   cout <<"Buffer 2 is greater than buffer 1"<<endl; 
  else  
   cout <<"Buffer 2 is less than buffer 1"<<endl; 
  ptr = strcmp(buf2,buf3);  
  if(ptr > 0) 
   cout <<"Buffer 2 is greater than buffer 3"<<endl; 
  else  
   cout <<"Buffer 2 is less than buffer 3"<<endl; 
}
運(yùn)行結(jié)果是:Buffer 2 is less than buffer 1  
                  Buffer 2 is greater than buffer 3

原型:strlen( const char string[] ); 
功能:統(tǒng)計(jì)字符串string中字符的個(gè)數(shù) 
例程: 
#include <iostream.h> 
#include <string.h> 
void main(void) 

  char str[100];  
  cout <<"請(qǐng)輸入一個(gè)字符串:"; 
  cin >>str; 
  cout <<"The length of the string is :"<<strlen(str)<<"個(gè)"<<endl; 
}
運(yùn)行結(jié)果The length of the string is x (x為你輸入的字符總數(shù)字)
注意:strlen函數(shù)的功能是計(jì)算字符串的實(shí)際長(zhǎng)度,不包括'\0'在內(nèi)。另外,strlen函數(shù)也可以直接測(cè)試字符串常量的長(zhǎng)度,如:strlen("Welcome")。

  
void *memset(void *dest, int c, size_t count);  
將dest前面count個(gè)字符置為字符c.  返回dest的值. 
void *memmove(void *dest, const void *src, size_t count);  
從src復(fù)制count字節(jié)的字符到dest. 如果src和dest出現(xiàn)重疊, 函數(shù)會(huì)自動(dòng)處理.  返回dest的值. 
void *memcpy(void *dest, const void *src, size_t count);  
從src復(fù)制count字節(jié)的字符到dest. 與memmove功能一樣, 只是不能處理src和dest出現(xiàn)重疊.  返回dest的值. 
void *memchr(const void *buf, int c, size_t count);  
在buf前面count字節(jié)中查找首次出現(xiàn)字符c的位置. 找到了字符c或者已經(jīng)搜尋了count個(gè)字節(jié), 查找即停止. 操作成功則返回buf中首次出現(xiàn)c的位置指針, 否則返回NULL. 
void *_memccpy(void *dest, const void *src, int c, size_t count);  
從src復(fù)制0個(gè)或多個(gè)字節(jié)的字符到dest. 當(dāng)字符c被復(fù)制或者count個(gè)字符被復(fù)制時(shí), 復(fù)制停止. 
如果字符c被復(fù)制, 函數(shù)返回這個(gè)字符后面緊挨一個(gè)字符位置的指針. 否則返回NULL. 
int memcmp(const void *buf1, const void *buf2, size_t count);  
比較buf1和buf2前面count個(gè)字節(jié)大小.  
返回值< 0, 表示buf1小于buf2;  
返回值為0, 表示buf1等于buf2;  
返回值> 0, 表示buf1大于buf2. 
int memicmp(const void *buf1, const void *buf2, size_t count); 
比較buf1和buf2前面count個(gè)字節(jié). 與memcmp不同的是, 它不區(qū)分大小寫(xiě). 
返回值同上. 
char *strrev(char *string);  
將字符串string中的字符順序顛倒過(guò)來(lái). NULL結(jié)束符位置不變.  返回調(diào)整后的字符串的指針. 
char *_strupr(char *string);  
將string中所有小寫(xiě)字母替換成相應(yīng)的大寫(xiě)字母, 其它字符保持不變.  返回調(diào)整后的字符串的指針. 
char *_strlwr(char *string);  
將string中所有大寫(xiě)字母替換成相應(yīng)的小寫(xiě)字母, 其它字符保持不變.  返回調(diào)整后的字符串的指針. 
char *strchr(const char *string, int c);  
查找字  串string中首次出現(xiàn)的位置, NULL結(jié)束符也包含在查找中.  返回一個(gè)指針, 指向字符c在字符串string中首次出現(xiàn)的位置, 如果沒(méi)有找到, 則返回NULL. 
char *strrchr(const char *string, int c);  
查找字符c在字符串string中最后一次出現(xiàn)的位置, 也就是對(duì)string進(jìn)行反序搜索, 包含NULL結(jié)束符.  
返回一個(gè)指針, 指向字符c在字符串string中最后一次出現(xiàn)的位置, 如果沒(méi)有找到, 則返回NULL. 
char *strstr(const char *string, const char *strSearch);  
在字符串string中查找strSearch子串.  返回子串strSearch在string中首次出現(xiàn)位置的指針. 如果沒(méi)有找到子串strSearch, 則返回NULL. 如果子串strSearch為空串, 函數(shù)返回string值. 
char *strdup(const char *strSource);  
函數(shù)運(yùn)行中會(huì)自己調(diào)用malloc函數(shù)為復(fù)制strSource字符串分配存儲(chǔ)空間, 然后再將strSource復(fù)制到分配到的空間中. 注意要及時(shí)釋放這個(gè)分配的空間. 
返回一個(gè)指針, 指向?yàn)閺?fù)制字符串分配的空間; 如果分配空間失敗, 則返回NULL值. 
char *strcat(char *strDestination, const char *strSource);  
將源串strSource添加到目標(biāo)串strDestination后面, 并在得到的新串后面加上NULL結(jié)束符. 源串strSource的字符會(huì)覆蓋目標(biāo)串strDestination后面的結(jié)束符NULL. 在字符串的復(fù)制或添加過(guò)程中沒(méi)有溢出檢查, 所以要保證目標(biāo)串空間足夠大. 不能處理源串與目標(biāo)串重疊的情況.  函數(shù)返回strDestination值. 
char *strncat(char *strDestination, const char *strSource, size_t count); 
將源串strSource開(kāi)始的count個(gè)字符添加到目標(biāo)串strDest后. 源串strSource的字符會(huì)覆蓋目標(biāo)串strDestination后面的結(jié)束符NULL. 如果count大于源串長(zhǎng)度, 則會(huì)用源串的長(zhǎng)度值替換count值. 得到的新串后面會(huì)自動(dòng)加上NULL結(jié)束符. 與strcat函數(shù)一樣, 本函數(shù)不能處理源串與目標(biāo)串重疊的情況. 函數(shù)返回strDestination值. 
char *strcpy(char *strDestination, const char *strSource);  
復(fù)制源串strSource到目標(biāo)串strDestination所指定的位置, 包含NULL結(jié)束符. 不能處理源串與目標(biāo)串重疊的情況.函數(shù)返回strDestination值. 
char *strncpy(char *strDestination, const char *strSource, size_t count); 
將源串strSource開(kāi)始的count個(gè)字符復(fù)制到目標(biāo)串strDestination所指定的位置. 如果count值小于或等于strSource串的長(zhǎng)度, 不會(huì)自動(dòng)添加NULL結(jié)束符目標(biāo)串中, 而count大于strSource串的長(zhǎng)度時(shí), 則將strSource用NULL結(jié)束符填充補(bǔ)齊count個(gè)字符, 復(fù)制到目標(biāo)串中. 不能處理源串與目標(biāo)串重疊的情況.函數(shù)返回strDestination值. 
char *strset(char *string, int c);  
將string串的所有字符設(shè)置為字符c, 遇到NULL結(jié)束符停止. 函數(shù)返回內(nèi)容調(diào)整后的string指針. 
char *strnset(char *string, int c, size_t count);  
將string串開(kāi)始count個(gè)字符設(shè)置為字符c, 如果count值大于string串的長(zhǎng)度, 將用string的長(zhǎng)度替換count值. 函數(shù)返回內(nèi)容調(diào)整后的string指針. 
size_t strspn(const char *string, const char *strCharSet);  
查找任何一個(gè)不包含在strCharSet串中的字符 (字符串結(jié)束符NULL除外) 在string串中首次出現(xiàn)的位置序號(hào).  返回一個(gè)整數(shù)值, 指定在string中全部由characters中的字符組成的子串的長(zhǎng)度. 如果string以一個(gè)不包含在strCharSet中的字符開(kāi)頭, 函數(shù)將返回0值. 
size_t strcspn(const char *string, const char *strCharSet);  
查找strCharSet串中任何一個(gè)字符在string串中首次出現(xiàn)的位置序號(hào), 包含字符串結(jié)束符NULL.  
返回一個(gè)整數(shù)值, 指定在string中全部由非characters中的字符組成的子串的長(zhǎng)度. 如果string以一個(gè)包含在strCharSet中的字符開(kāi)頭, 函數(shù)將返回0值. 
char *strspnp(const char *string, const char *strCharSet);  
查找任何一個(gè)不包含在strCharSet串中的字符 (字符串結(jié)束符NULL除外) 在string串中首次出現(xiàn)的位置指針. 返回一個(gè)指針, 指向非strCharSet中的字符在string中首次出現(xiàn)的位置. 
char *strpbrk(const char *string, const char *strCharSet);  
查找strCharSet串中任何一個(gè)字符在string串中首次出現(xiàn)的位置, 不包含字符串結(jié)束符NULL.  
返回一個(gè)指針, 指向strCharSet中任一字符在string中首次出現(xiàn)的位置. 如果兩個(gè)字符串參數(shù)不含相同字符, 則返回NULL值. 
int strcmp(const char *string1, const char *string2);  
比較字符串string1和string2大小.  
返回值< 0, 表示string1小于string2;  
返回值為0, 表示string1等于string2;  
返回值> 0, 表示string1大于string2. 
int stricmp(const char *string1, const char *string2);  
比較字符串string1和string2大小,和strcmp不同, 比較的是它們的小寫(xiě)字母版本.返回值與strcmp相同. 
int strcmpi(const char *string1, const char *string2);  
等價(jià)于stricmp函數(shù), 只是提供一個(gè)向后兼容的版本. 
int strncmp(const char *string1, const char *string2, size_t count);  
比較字符串string1和string2大小,只比較前面count個(gè)字符. 比較過(guò)程中, 任何一個(gè)字符串的長(zhǎng)度小于count, 則count將被較短的字符串的長(zhǎng)度取代. 此時(shí)如果兩串前面的字符都相等, 則較短的串要小. 
返回值< 0, 表示string1的子串小于string2的子串;  
返回值為0, 表示string1的子串等于string2的子串;  
返回值> 0, 表示string1的子串大于string2的子串. 
int strnicmp(const char *string1, const char *string2, size_t count); 
比較字符串string1和string2大小,只比較前面count個(gè)字符. 與strncmp不同的是, 比較的是它們的小寫(xiě)字母版本.  返回值與strncmp相同. 
char *strtok(char *strToken, const char *strDelimit);  
在strToken 串中查找下一個(gè)標(biāo)記, strDelimit字符集則指定了在當(dāng)前查找調(diào)用中可能遇到的分界符. 返回一個(gè)指針, 指向在strToken中找到的下一個(gè)標(biāo)記. 如果找不到標(biāo)記, 就返回NULL值. 每次調(diào)用都會(huì)修改strToken內(nèi)容, 用NULL字符替換遇到的每個(gè)分界符.

 本文版權(quán)歸傳智播客C++培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!
作者:傳智播客C/C++培訓(xùn)學(xué)院
首發(fā):http://www.xamj520.com/c/ 
 
 
0 分享到:
和我們?cè)诰€(xiàn)交談!