1)字元串操作
strcpy(p, p1) 複制字元串
strncpy(p, p1, n) 複制指定長度字元串
strcat(p, p1) 附加字元串
strncat(p, p1, n) 附加指定長度字元串
strlen(p) 取字元串長度
strcmp(p, p1) 比較字元串
strcasecmp忽略大小寫比較字元串
strncmp(p, p1, n) 比較指定長度字元串
strchr(p, c) 在字元串中查找指定字元
strrchr(p, c) 在字元串中反向查找
strstr(p, p1) 查找字元串
strpbrk(p, p1) 以目标字元串的所有字元作為集合,在目前字元串查找該集合的任一進制素
strspn(p, p1) 以目标字元串的所有字元作為集合,在目前字元串查找不屬于該集合的任一進制素的偏移
strcspn(p, p1) 以目标字元串的所有字元作為集合,在目前字元串查找屬于該集合的任一進制素的偏移
* 具有指定長度的字元串處理函數在已處理的字元串之後填補零結尾符
2)字元串到數值類型的轉換
strtod(p, ppend) 從字元串 p 中轉換 double 類型數值,并将後續的字元串指針存儲到 ppend 指向的 char* 類型存儲。
strtol(p, ppend, base) 從字元串 p 中轉換 long 類型整型數值,base 顯式設定轉換的整型進制,設定為 0 以根據特定格式判斷所用進制,0x, 0X 字首以解釋為十六進制格式整型,0 字首以解釋為八進制格式整型
atoi(p) 字元串轉換到 int 整型
atof(p) 字元串轉換到 double 符點數
atol(p) 字元串轉換到 long 整型
3)字元檢查
isalpha() 檢查是否為字母字元
isupper() 檢查是否為大寫字母字元
islower() 檢查是否為小寫字母字元
isdigit() 檢查是否為數字
isxdigit() 檢查是否為十六進制數字表示的有效字元
isspace() 檢查是否為空格類型字元
iscntrl() 檢查是否為控制字元
ispunct() 檢查是否為标點符号
isalnum() 檢查是否為字母和數字
isprint() 檢查是否是可列印字元
isgraph() 檢查是否是圖形字元,等效于 isalnum() | ispunct()
4)函數原型
strcpy
原型: char * strcpy(char destination[], const char source[]);
功能:将字元串source拷貝到字元串destination中
例程:
#include
void main(void)
{
char str1[] = { "TsinghuaOK"};
char str2[] = { "Computer"};
printf("%s\n", strcpy(str1, str2));
}
運作結果是:Computer
第二個字元串将覆寫掉第一個字元串的所有内容!
注意:在定義數組時,字元數組1的字元串長度必須大于或等于字元串2的字元串長度。不能用指派語句将一個字元串常量或字元數組直接賦給一個字元數組。所有字元串處理函數都包含在頭檔案string.h中。
strncpy
原型: char * strncpy(char destination[], const char source[], int numchars);
功能:将字元串source中前num個char字元拷貝到字元串destination中
例程:
#include
void main(void)
{
char str1[] = { "Tsinghua "};
char str2[] = { "Computer"};
printf("%s\n", strncpy(str1, str2, sizeof(str1)));
}
運作結果:Comnghua
注意:字元串source中前numchars個字元将覆寫掉字元串destination中前numchars個字元!
strcat
**原型:**strcat(char target[], const char source[]);
功能:将字元串source接到字元串target的後面
例程:
#include
void main(void)
{
char str1[] = { "Tsinghua "};
char str2[] = { "Computer"};
cout <<}
運作結果:Tsinghua Computer
注意:在定義字元數組1的長度時應該考慮字元數組2的長度,因為連接配接後新字元串的長度為兩個字元串長度之和。進行字元串連接配接後,字元串1的結尾符将自動被去掉,在結尾串末尾保留新字元串後面一個結尾符。
strncat
原型: strncat(char target[], const char source[], int numchars);
功能:将字元串source的前numchars個字元接到字元串target的後面
例程:
#include
void main(void)
{
char str1[] = { "Tsinghua "};
char str2[] = { "Computer"};
cout <<}
運作結果:Tsinghua Com
原型:int strcmp(const char firststring[], const char secondstring);
功能:比較兩個字元串firststring和secondstring
例程:
#include
void main(void)
{
char buf1[] = "aaa";
char buf2[] = "bbb";
char buf3[] = "ccc";
int ptr;
ptr = strcmp(buf2,buf1);
if(ptr > )
cout << Buffer is greater than buffer endl >
else
cout << Buffer is less than buffer endl >
ptr = strcmp(buf2,buf3);
if(ptr > )
cout << Buffer is greater than buffer endl >
else
cout << Buffer is less than buffer endl >
}
運作結果是:Buffer 2 is less than buffer 1
Buffer 2 is greater than buffer 3
原型:strlen( const char string[] );
功能:統計字元串string中字元的個數
例程:
#include
void main(void)
{
char str[];
cout << br style='font-size:14px;font-style:normal;font-weight:normal;color:rgb(0, 0, 0);' /> cin >>str;
cout << The length of the string is strlenstr><< endl >
}
運作結果The length of the string is x (x為你輸入的字元總數字)
注意:strlen函數的功能是計算字元串的實際長度,不包括’\0’在内。另外,strlen函數也可以直接測試字元串常量的長度,如:strlen(“Welcome”)。
void *memset(void *dest, int c, size_t count);
将dest前面count個字元置為字元c. 傳回dest的值.
void *memmove(void *dest, const void *src, size_t count);
從src複制count位元組的字元到dest. 如果src和dest出現重疊, 函數會自動處理. 傳回dest的值.
void *memcpy(void *dest, const void *src, size_t count);
從src複制count位元組的字元到dest. 與memmove功能一樣, 隻是不能處理src和dest出現重疊. 傳回dest的值.
void *memchr(const void *buf, int c, size_t count);
在buf前面count位元組中查找首次出現字元c的位置. 找到了字元c或者已經搜尋了count個位元組, 查找即停止. 操作成功則傳回buf中首次出現c的位置指針, 否則傳回NULL.
void *_memccpy(void *dest, const void *src, int c, size_t count);
從src複制0個或多個位元組的字元到dest. 當字元c被複制或者count個字元被複制時, 複制停止.
如果字元c被複制, 函數傳回這個字元後面緊挨一個字元位置的指針. 否則傳回NULL.
int memcmp(const void *buf1, const void *buf2, size_t count);
比較buf1和buf2前面count個位元組大小.
傳回值< 0 bufbuf br style=’font-size:14px;font-style:normal;font-weight:normal;color:rgb(0, 0, 0);’ />傳回值為0, 表示buf1等于buf2;
傳回值> 0, 表示buf1大于buf2.
int memicmp(const void *buf1, const void *buf2, size_t count);
比較buf1和buf2前面count個位元組. 與memcmp不同的是, 它不區分大小寫.
傳回值同上.
char *strrev(char *string);
将字元串string中的字元順序颠倒過來. NULL結束符位置不變. 傳回調整後的字元串的指針.
char *_strupr(char *string);
将string中所有小寫字母替換成相應的大寫字母, 其它字元保持不變. 傳回調整後的字元串的指針.
char *_strlwr(char *string);
将string中所有大寫字母替換成相應的小寫字母, 其它字元保持不變. 傳回調整後的字元串的指針.
char *strchr(const char *string, int c);
查找字 串string中首次出現的位置, NULL結束符也包含在查找中. 傳回一個指針, 指向字元c在字元串string中首次出現的位置, 如果沒有找到, 則傳回NULL.
char *strrchr(const char *string, int c);
查找字元c在字元串string中最後一次出現的位置, 也就是對string進行反序搜尋, 包含NULL結束符.
傳回一個指針, 指向字元c在字元串string中最後一次出現的位置, 如果沒有找到, 則傳回NULL.
char *strstr(const char *string, const char *strSearch);
在字元串string中查找strSearch子串. 傳回子串strSearch在string中首次出現位置的指針. 如果沒有找到子串strSearch, 則傳回NULL. 如果子串strSearch為空串, 函數傳回string值.
char *strdup(const char *strSource);
函數運作中會自己調用malloc函數為複制strSource字元串配置設定存儲空間, 然後再将strSource複制到配置設定到的空間中. 注意要及時釋放這個配置設定的空間.
傳回一個指針, 指向為複制字元串配置設定的空間; 如果配置設定空間失敗, 則傳回NULL值.
char *strcat(char *strDestination, const char *strSource);
将源串strSource添加到目标串strDestination後面, 并在得到的新串後面加上NULL結束符. 源串strSource的字元會覆寫目标串strDestination後面的結束符NULL. 在字元串的複制或添加過程中沒有溢出檢查, 是以要保證目标串空間足夠大. 不能處理源串與目标串重疊的情況. 函數傳回strDestination值.
char *strncat(char *strDestination, const char *strSource, size_t count);
将源串strSource開始的count個字元添加到目标串strDest後. 源串strSource的字元會覆寫目标串###strDestination後面的結束符NULL. 如果count大于源串長度, 則會用源串的長度值替換count值. 得到的新串後面會自動加上NULL結束符. 與strcat函數一樣, 本函數不能處理源串與目标串重疊的情況. 函數傳回strDestination值.
char *strcpy(char *strDestination, const char *strSource);
複制源串strSource到目标串strDestination所指定的位置, 包含NULL結束符. 不能處理源串與目标串重疊的情況.函數傳回strDestination值.
char *strncpy(char *strDestination, const char *strSource, size_t count);
将源串strSource開始的count個字元複制到目标串strDestination所指定的位置. 如果count值小于或等于strSource串的長度, 不會自動添加NULL結束符目标串中, 而count大于strSource串的長度時, 則将strSource用NULL結束符填充補齊count個字元, 複制到目标串中. 不能處理源串與目标串重疊的情況.函數傳回strDestination值.
char *strset(char *string, int c);
将string串的所有字元設定為字元c, 遇到NULL結束符停止. 函數傳回内容調整後的string指針.
char *strnset(char *string, int c, size_t count);
将string串開始count個字元設定為字元c, 如果count值大于string串的長度, 将用string的長度替換count值. 函數傳回内容調整後的string指針.
size_t strspn(const char *string, const char *strCharSet);
查找任何一個不包含在strCharSet串中的字元 (字元串結束符NULL除外) 在string串中首次出現的位置序号. 傳回一個整數值, 指定在string中全部由characters中的字元組成的子串的長度. 如果string以一個不包含在strCharSet中的字元開頭, 函數将傳回0值.
size_t strcspn(const char *string, const char *strCharSet);
查找strCharSet串中任何一個字元在string串中首次出現的位置序号, 包含字元串結束符NULL.
傳回一個整數值, 指定在string中全部由非characters中的字元組成的子串的長度. 如果string以一個包含在strCharSet中的字元開頭, 函數将傳回0值.
char *strspnp(const char *string, const char *strCharSet);
查找任何一個不包含在strCharSet串中的字元 (字元串結束符NULL除外) 在string串中首次出現的位置指針. 傳回一個指針, 指向非strCharSet中的字元在string中首次出現的位置.
char *strpbrk(const char *string, const char *strCharSet);
查找strCharSet串中任何一個字元在string串中首次出現的位置, 不包含字元串結束符NULL.
傳回一個指針, 指向strCharSet中任一字元在string中首次出現的位置. 如果兩個字元串參數不含相同字元, 則傳回NULL值.
int strcmp(const char *string1, const char *string2);
比較字元串string1和string2大小.
傳回值< 0 stringstring br style=’font-size:14px;font-style:normal;font-weight:normal;color:rgb(0, 0, 0);’ />傳回值為0, 表示string1等于string2;
傳回值> 0, 表示string1大于string2.
int stricmp(const char *string1, const char *string2);
比較字元串string1和string2大小,和strcmp不同, 比較的是它們的小寫字母版本.傳回值與strcmp相同.
int strcmpi(const char *string1, const char *string2);
等價于stricmp函數, 隻是提供一個向後相容的版本.
int strncmp(const char *string1, const char *string2, size_t count);
比較字元串string1和string2大小,隻比較前面count個字元. 比較過程中, 任何一個字元串的長度小于count, 則count将被較短的字元串的長度取代. 此時如果兩串前面的字元都相等, 則較短的串要小.
傳回值< 0 stringstring br style=’font-size:14px;font-style:normal;font-weight:normal;color:rgb(0, 0, 0);’ />傳回值為0, 表示string1的子串等于string2的子串;
傳回值> 0, 表示string1的子串大于string2的子串.
int strnicmp(const char *string1, const char *string2, size_t count);
比較字元串string1和string2大小,隻比較前面count個字元. 與strncmp不同的是, 比較的是它們的小寫字母版本. 傳回值與strncmp相同.
char *strtok(char *strToken, const char *strDelimit);
在strToken 串中查找下一個标記, strDelimit字元集則指定了在目前查找調用中可能遇到的分界符. 傳回一個指針, 指向在strToken中找到的下一個标記. 如果找不到标記, 就傳回NULL值. 每次調用都會修改strToken内容, 用NULL字元替換遇到的每個分界符.
c++概念字元串操作