字串操作---C語言與C++
字串在儲存上類似與字元陣列,它的每一位的單個元素都是可以提取的。字串操作就是一串為整體作為操作物件。例如:查詢某個子串、刪除某個子串等等。
一、C語言中的字串操作
strcpy(str1,str2); 複製字串
strncpy(str1,str2,n); 複製指定長度的字串
strcat(str1,str2); 拼接字串
strncat(str1,str2,n); 拼接指定長度的字串
strcmp(str1,str2); 比較兩個字串
strncmp(str1,str2,n); 比較指定長度的字串,計較過程中,任何一個字串的長度小於n,則n將被較短的字串長度取代
strnicmp(str1,str2,n); 與strncmp的不同是,比較他們的小寫字母版
strcasecmp(str1,str2);忽略大小寫比較兩個字串
strlen(str1); 取字串長度
strchr(str1,c); 在字串中查詢指定字元
strrchr(str1,c); 在字串中反向查詢指定字元
strstr(str1,str2); 查詢字串
strset(str1,c); 將字串中的所有字元設為指定字元c
strnset(str1,c,n); 將一個字串中的n個字元都設為指定字元c
strpbrk(str1,str2); 查詢str2中任何一個字元在str1中首次出現的位置,不包含字串結束符NULL
strrev(str); 將字串中的字元順序顛倒過來
strupr(str); 將字串中所有小寫字母替換成相應的大寫字母
strlwr(str); 將字串中所有的大寫字母替換成相應的小寫字母
memset(str1,(int)c,n); 將str1前面的n個字元改為字元c
例如:
#include <stdio.h>
#include <string.h>
int main()
{
char str1[100]= "abcdefg";
int c='2';
int n=3;
memset(str1,c,n);
printf("%s\n", str1);
return 0;
}
輸出結果為:222defg
memmove(str1,str2,n); 從str2複製n個字元到str1,如果str1和str2出現重疊,函式會自動處理
memcpy(str1,str2,n); 與memmove功能一樣,但是不能處理str1和str2出現重疊
二、C++字串操作
1、字串賦值
“ = ”和assign()
具體用法:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str1="yesterday once more";
cout<<"str1="<<str1<<endl;
string str2 ("my heart go on");
cout<<"str2="<<str2<<endl;
string str3,str4;
str3.assign(str2,3,6);//=heart
cout<<"str3="<<str3<<endl;
str4.assign(str2,3,string::npos);//=heart go on (從2開始到結尾賦給str4)npos表示的最大值
cout<<"str4="<<str4<<endl;
str4.assign("gaint");//=gaint
cout<<"str4="<<str4<<endl;
str4.assign("nico",5);//= nico
cout<<"str4="<<str4<<endl;
str4.assign(5,'x');//=xxxxx
cout<<"str4="<<str4<<endl;
return 0;
}
2、字串增加
“+=”,append(),push_back()
具體用法:
s+=”my name is Tom”;
s+=a;
s.append(str1,1,3);
s.append(str1,2,string::npos);
s.append(“abc”);
s.append(“def”,5);
s.append(5,’x’);
s.push_back(‘a’);//這個函式只能增加單個字元
3、字串交換swap()
str1.swap(str2); 交換兩個字串的內容
4、字串插入insert()
s.insert(0,”my name”);
s.insert(1,str);
這個形式的insert()函式不支援傳入單個字元,這時的單個字元必須寫成字串形式。
5、字串刪除erase()
s.erase(1);//從第二個(1是下標)開始往後刪除
s.erase(1,3);//從第二個開始往後刪3個
6、字串替換
s.replace(1,2,str1); //從第二個開始,往後2個,替換為字串str1
7、字串查詢find()
s.find(c,n);在字串s中從第n+1個字元(n為下標)開始查詢字元c,找到返回下標,沒找到返回-1
8、取字串
substr(n,m);取出從n+1到n+m+1的子字串(n,m都為下標)
還會陸續更新。。。。。。。