string.h

string.h

string.h在c語言和c++語言中都被廣泛的使用,但是具體情況不是很一樣。問題在於C++要兼容C的標準庫,而C的標準庫里碰巧也已經有一個名字叫做“string.h”的頭文件,包含一些常用的C字元串處理函數。這個頭文件跟C++的string類半點關係也沒有,所以 並非 的“升級版本”,他們是毫無關係的兩個頭文件。*功能:從字元串haystack中尋找needle第一次出現的位置(不比較結束符NULL)。

簡單介紹


C語言裡面關於字元數組的函數定義的頭文件,常用函數有strlen、strcmp、strcpy等等,更詳細的可以到include文件夾裡面查看該文件。

文件資料


string.h
string.h
文件名稱string.h
文件大小1.30 MB
系統文件
後台執行
使用網路
硬體相關
常見錯誤載入異常
內存使用未知(N/A)
安全等級
廣告軟體
間諜軟體
木馬病毒
編程軟體
函數庫文件
函數數目26

版本內容


string.h在c語言和c++語言中都被廣泛的使用,但是具體情況不是很一樣。由於傳統的C++脫胎於C,所以傳統C++中於C語言中對本詞條的用法差不多,經過美國標準化組織修改標準化后的標準C++中,定義則是大不相同。

傳統介紹

其中包含的引用頭文件如下:
string.h
string.h
#include //設定插入點
#include //字元處理
#include //定義錯誤碼
#include //浮點數處理
#include //文件輸入/輸出
#include //參數化輸入/輸出
#include //數據流輸入/輸出
#include //定義各種數據類型最值常量
#include //定義本地化函數
#include //定義數學函數
#include //定義輸入/輸出函數
#include //定義雜項函數及內存分配函數
#include //字元串處理
#include //基於數組的輸入/輸出
#include //定義關於時間的函數
#include //寬字元處理及輸入/輸出
#include //寬字元分類

標準介紹

其中包括的頭文件如下(同上的不再註釋)
#include //STL 通用演演算法
#include //STL 位集容器
#include
#include
#include
#include
#include //複數類
#include
#include
#include
#include
#include //STL雙端隊列容器
#include //異常處理類
#include
string.h
string.h
#include //STL 定義運算函數(代替運算符)
#include
#include //STL 線性列表容器
#include //STL 映射容器
#include
#include //基本輸入/輸出支持
#include //輸入/輸出系統使用的前置聲明
#include
#include //基本輸入流
#include //基本輸出流
#include //STL 隊列容器
#include //STL 集合容器
#include //基於字元串的流
#include //STL堆棧容器
#include //標準異常類
#include //底層輸入/輸出支持
#include //字元串類
#include //STL 通用模板類
#include //STL動態數組容器
#include
#include
using namespace std;

C99增加

#include //複數處理
#include //浮點環境
#include //整數格式轉換
#include //布爾環境
#include //整型環境
#include //通用類型數學宏

疑問解答


c++中 string與string.h 的作用和區別
答:一般一個C++的老的帶“.h”擴展名的庫文件,比如iostream.h,在新標準后的標準庫中都有一個不帶“.h”擴展名的相對應,區別除了後者的好多改進之外,還有一點就是後者的東東都塞進了“std”名字空間中。
但唯獨string特別。
問題在於C++要兼容C的標準庫,而C的標準庫里碰巧也已經有一個名字叫做“string.h”的頭文件,包含一些常用的C字元串處理函數。
這個頭文件跟C++的string類半點關係也沒有,所以 並非 的“升級版本”,他們是毫無關係的兩個頭文件。
c++ 中包括哪些函數?
答:常用函數如下:
strlen求字元串長度
strcmp比較2個字元串是否一樣
strcat字元串連接操作
strcpy字元串拷貝操作
strncat字元串連接操作(前n個字元)
strncpy字元串拷貝操作(前n個字元)
strchr查詢字串
strstr 查詢子串

函數詳細用法


下面為string.h文件中函數的詳細用法,附加實例:

strcpy

函數名:stpcpy
功能:拷貝一個字元串到另一個
用法:char*stpcpy(char*destin,char*source);
程序例:
#include
#include
intmain(void)
{
charstring;
char*str1="abcdefghi";
strcpy(string,str1);
printf("%s\n",string);
return0;
}

strcat

函數名:strcat
功能:字元串拼接函數
用法:char*strcat(char*destin,char*source);
程序例:
#include
#include
intmain(void)
{
chardestination;
char*blank="",*c="C++",*Borland="Borland";
strcpy(destination,Borland);
strcat(destination,blank);
strcat(destination,c);
printf("%s\n",destination);
return0;
}

strchr

函數名:strchr
功能:在一個串中查找給定字元的第一個匹配之處\
用法:char*strchr(char*str,charc);
程序例:
#include
#include
intmain(void)
{
charstring;
char*ptr,c='r';
strcpy(string,"Thisisastring");
ptr=strchr(string,c);
if(ptr)
printf("Thecharacter%cisatposition:%d\n",c,ptr-string);
else
printf("Thecharacterwasnotfound\n");
return0;
}

strcmp

函數名:strcmp
功能:串比較
用法:intstrcmp(char*str1,char*str2);
看Asic碼,str1>str2,返回值>0;兩串相等,返回0
程序例:
#include
#include
intmain(void)
{
char*buf1="aaa",*buf2="bbb",*buf3="ccc";
intptr;
ptr=strcmp(buf2,buf1);
if(ptr>0)
printf("buffer2isgreaterthanbuffer1\n");
else
printf("buffer2islessthanbuffer1\n");
ptr=strcmp(buf2,buf3);
if(ptr>0)
printf("buffer2isgreaterthanbuffer3\n");
else
printf("buffer2islessthanbuffer3\n");
return0;
}

strncmpi

函數名:strncmpi
功能:將一個串中的一部分與另一個串比較,不管大小寫
用法:intstrncmpi(char*str1,char*str2,unsignedmaxlen);
程序例:
#include
#include
intmain(void)
{
char*buf1="BBB",*buf2="bbb";
intptr;
ptr=strcmpi(buf2,buf1);
if(ptr>0)
printf("buffer2isgreaterthanbuffer1\n");
if(ptr<0)
printf("buffer2islessthanbuffer1\n");
if(ptr==0)
printf("buffer2equalsbuffer1\n");
return0;
}

strcspn

函數名:strcspn
功能:在串中查找第一個給定字符集內容的段
用法:intstrcspn(char*str1,char*str2);
程序例:
#include
#include
#include
intmain(void)
{
char*string1="1234567890";
char*string2="747DC8";
intlength;
length=strcspn(string1,string2);
printf("Characterwherestringsintersectisatposition%d\n",length);
return0;
}

strdup

函數名:strdup
功能:將串拷貝到新建的位置處
用法:char*strdup(char*str);
程序例:
#include
#include
#include
intmain(void)
{
char*dup_str,*string="abcde";
dup_str=strdup(string);
printf("%s\n",dup_str);
free(dup_str);
return0;
}

stricmp

函數名:stricmp
功能:以大小寫不敏感方式比較兩個串
用法:intstricmp(char*str1,char*str2);
程序例:
#include
#include
intmain(void)
{
char*buf1="BBB",*buf2="bbb";
intptr;
ptr=stricmp(buf2,buf1);
if(ptr>0)
printf("buffer2isgreaterthanbuffer1\n");
if(ptr<0)
printf("buffer2islessthanbuffer1\n");
if(ptr==0)
printf("buffer2equalsbuffer1\n");
return0;
}

strerror

函數名:strerror
功能:返回指向錯誤信息字元串的指針
用法:char*strerror(interrnum);
程序例:
#include
#include
intmain(void)
{
char*buffer;
buffer=strerror(errno);
printf("Error:%s\n",buffer);
return0;
}

strcmpi

函數名:strcmpi
功能:將一個串與另一個比較,不管大小寫
用法:intstrcmpi(char*str1,char*str2);
程序例:
#include
#include
intmain(void)
{
char*buf1="BBB",*buf2="bbb";
intptr;
ptr=strcmpi(buf2,buf1);
if(ptr>0)
printf("buffer2isgreaterthanbuffer1\n");
if(ptr<0)
printf("buffer2islessthanbuffer1\n");
if(ptr==0)
printf("buffer2equalsbuffer1\n");
return0;
}
函數名:strncmp
功能:串比較
用法:intstrncmp(char*str1,char*str2,intmaxlen);
程序例:
#include
#include
intmain(void)
{
char*buf1="aaabbb",*buf2="bbbccc",*buf3="ccc";
intptr;
ptr=strncmp(buf2,buf1,3);
if(ptr>0)
printf("buffer2isgreaterthanbuffer1\n");
else
printf("buffer2islessthanbuffer1\n");
ptr=strncmp(buf2,buf3,3);
if(ptr>0)
printf("buffer2isgreaterthanbuffer3\n");
else
printf("buffer2islessthanbuffer3\n");
return(0);
}

strncpy

函數名:strncpy
功能:串拷貝
用法:char*strncpy(char*destin,char*source,intmaxlen);
程序例:
#include
#include
intmain(void)
{
charstring;
char*str1="abcdefghi";
strncpy(string,str1,3);
string='\0';
printf("%s\n",string);
return0;
}

strnicmp

函數名:strnicmp
功能:不注重大小寫地比較兩個串
用法:intstrnicmp(char*str1,char*str2,unsignedmaxlen);
程序例:
#include
#include
intmain(void)
{
char*buf1="BBBccc",*buf2="bbbccc";
intptr;
ptr=strnicmp(buf2,buf1,3);
if(ptr>0)
printf("buffer2isgreaterthanbuffer1\n");
if(ptr<0)
printf("buffer2islessthanbuffer1\n");
if(ptr==0)
printf("buffer2equalsbuffer1\n");
return0;
}

strnset

函數名:strnset
功能:將一個串中的所有字元都設為指定字元
用法:char*strnset(char*str,charch,unsignedn);
程序例:
#include
#include
intmain(void)
{
char*string="abcdefghijklmnopqrstuvwxyz";
charletter='x';
printf("stringbeforestrnset:%s\n",string);
strnset(string,letter,13);
printf("stringafterstrnset:%s\n",string);
return0;
}

strpbrk

函數名:strpbrk
功能:在串中查找給定字符集中的字元
用法:char*strpbrk(char*str1,char*str2);
程序例:
#include
#include
intmain(void)
{
char*string1="abcdefghijklmnopqrstuvwxyz";
char*string2="ONM";
char*ptr;
ptr=strpbrk(string1,string2);
if(ptr)
printf("strpbrkfoundfirstcharacter:%c\n",*ptr);
else
printf("strpbrkdidn'tfindcharacterinset\n");
return0;
}

strrchr

函數名:strrchr
功能:在串中查找指定字元的最後一個出現
用法:char*strrchr(char*str,charc);
程序例:
#include
#include
intmain(void)
{
charstring;
char*ptr,c='r';
strcpy(string,"Thisisastring");
ptr=strrchr(string,c);
if(ptr)
printf("Thecharacter%cisatposition:%d\n",c,ptr-string);
else
printf("Thecharacterwasnotfound\n");
return0;
}

strrev

函數名:strrev
功能:串倒轉
用法:char*strrev(char*str);
程序例:
#include
#include
intmain(void)
{
char*forward="string";
printf("Beforestrrev():%s\n",forward);
strrev(forward);
printf("Afterstrrev():%s\n",forward);
return0;
}

strset

函數名:strset
功能:將一個串中的所有字元都設為指定字元
用法:char*strset(char*str,charc);
程序例:
#include
#include
intmain(void)
{
charstring="123456789";
charsymbol='c';
printf("Beforestrset():%s\n",string);
strset(string,symbol);
printf("Afterstrset():%s\n",string);
return0;
}

strspn

函數名:strspn
功能:在串中查找指定字符集的子集的第一次出現
用法:intstrspn(char*str1,char*str2);
程序例:
#include
#include
#include
intmain(void)
{
char*string1="1234567890";
char*string2="123DC8";
intlength;
length=strspn(string1,string2);
printf("Characterwherestringsdifferisatposition%d\n",length);
return0;
}

strstr

函數名:strstr
功能:在串中查找指定字元串的第一次出現
用法:char*strstr(char*str1,char*str2);
程序例:
#include
#include
intmain(void)
{
char*str1="BorlandInternational",*str2="nation",*ptr;
ptr=strstr(str1,str2);
printf("Thesubstringis:%s\n",ptr);
return0;
}

strtod

函數名:strtod
功能:將字元串轉換為double型值
用法:doublestrtod(char*str,char**endptr);
程序例:
#include
#include
intmain(void)
{
charinput,*endptr;
doublevalue;
printf("Enterafloatingpointnumber:");
gets(input);
value=strtod(input,&endptr);
printf("Thestringis%sthenumberis%lf\n",input,value);
return0;
}

strtok

函數名:strtok
功能:查找由在第二個串中指定的分界符分隔開的單詞
用法:char*strtok(char*str1,char*str2);
程序例:
#include
#include
intmain(void)
{
charinput="abc,d";
char*p;
p=strtok(input,",");
if(p)printf("%s\n",p);
p=strtok(NULL,",");
if(p)printf("%s\n",p);
return0;
}

strtol

函數名:strtol
功能:將串轉換為長整數
用法:longstrtol(char*str,char**endptr,intbase);
程序例:
#include
#include
intmain(void)
{
char*string="87654321",*endptr;
longlnumber;
lnumber=strtol(string,&endptr,10);
printf("string=%slong=%ld\n",string,lnumber);
return0;
}

strupr

函數名:strupr
功能:將串中的小寫字母轉換為大寫字母
用法:char*strupr(char*str);
程序例:
#include
#include
intmain(void)
{
char*string="abcdefghijklmnopqrstuvwxyz",*ptr;
ptr=strupr(string);
printf("%s\n",ptr);
return0;
}

swab

函數名:swab
功能:交換位元組
用法:voidswab(char*from,char*to,intnbytes);
程序例:
#include
#include
#include
charsource="rFnakoBlrnad";
chartarget;
intmain(void)
{
swab(source,target,strlen(source));
printf("Thisistarget:%s\n",target);
return0;
原型:externchar*strstr(char*haystack,char*needle);
*所在頭文件:#include
*功能:從字元串haystack中尋找needle第一次出現的位置(不比較結束符NULL)。
*說明:返回指向第一次出現needle位置的指針,如果沒找到則返回NULL。