1. 程式人生 > >字串操作---C語言與C++

字串操作---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都為下標)

還會陸續更新。。。。。。。