C++中的一些字串處理函式小總結
阿新 • • 發佈:2019-02-03
- strcpy和strncpy複製字串:
strcpy將第二個引數(字串)複製到第一個引數(字元陣列)中,注意,兩個引數都是字元陣列,而且第一個陣列的長度要大於字串的長度。
strncpy除了指定從字串複製到字元陣列的字元個數外,其他和strcpy相似
例如:
char data1[11];
char data2[] = "hello";
strcpy(data1,data2);
strncpy(data1,data2,5);
- strtok進行字串的分割,記號化字串
函式原型:char *strtok(char *s,char *parameter )
引數s指向將要被分隔的字串,引數parameter為分隔字串,當strtok()在引數s的字串中發現到引數parameter的分隔字元時,則會將該字元改為’\0’字元,在第一次呼叫時,strtok()必需給予引數s字串,往後的呼叫則將引數s設定成NULL.每次呼叫成功則返回被分隔片段的指標,目前暫且且不是很清楚其中的原理
include <iostream>
include <cstring>
using namespace std;
int main()
{
char sentence[]="This is a sentence with 7 tokens";
cout<<"The string to be tokenized is:\n"
<<sentence<<"\n\nThe tokens are:\n\n";
char *tokenPtr=strtok(sentence," ");
while (tokenPtr!=NULL) {
cout<<tokenPtr<<'\n';
tokenPtr=strtok(NULL," ");
}
cout<<"After strtok, sentence = "<<sentence<<endl;
return 0;
}
由於在分割時加入了’\0’的終止字元,所以在列印sentence時只會出現
This
列印結果:
This
is
a
sentence
with
7
tokens
After strtok, sentence = This
strcat和strncat連線字串
srtcat中將第二個字串連線到第一個字元陣列的尾部,所以,一定要確保第一個字元陣列的長度足夠大,可以容納第二個字串長度。第二個引數所代表的字串的第一個字元會將第一個字元陣列末尾的終止字元替換掉,所以要保證第一個陣列的長度可以容納第二個字元長度和一個終止字元。
strncat將制定個數的字元連線到第一個中。
strcmp和strncmp比較字串,其比較是根據ASCLL碼來比較大小,例如:
int strmcp(char * data1,char * data2);如果data1為Hello,data2為Hella,那麼data1大於data2。
在比較中,相等返回0,第一個大,返回1,第二個大,返回-1.
5.strlen確定字串的長度
strlen以一個字串作為引數,返回該字串中的字元數,不包含終止字元