String類的操作

2022-08-19 22:48:14 字數 3522 閱讀 1433

string 由標頭檔案支援,支援的物件可以是字元也可以是寬字元

1、初始化

string str("1234567");

char ch="abcdefg";

string a;

string str_1(str);//使用str初始化

string str_2(str,2,5);//2,5 限定複製範圍

string str_5(str.begin(),str.end());//迭代器的初始化

string str_3(ch,5);//ch陣列的前5個元素賦值給str_3

string str_4(5,'x');//初始化str_4有5個『x'

2.大小

1.返回實際字元的多少

cout<2.max_size()最多包含則字元數

cout<3.capacity()

重新分配記憶體之前,string所能包含的最大字元數。

讓string擁有足夠的容量是很重要的,原因有二:

1、重新分配會造成所有指向string的references,pointer和iterators失效。

2、重新分配(reallocation)很耗時間。

因此,如果程式要用到指向string(或其內部字元)的references,pointers和iterators。抑或需要很快的執行速度,就必須考慮容量(capacity)問題。成員函式reserve()就是用來避免重分配行為。reserve()使你得以預留一定容量,並確保該容量尚有餘裕之時,reference能夠一直保持有效:

std::string s; // create empty string

s.reserve(80); // reserve memory for 80 characters

3.元素的隨機訪問,返回的是字元的引用

1)下標

cout<2)at函式

cout<4.比較

1)比較運算子》,<,>=,<=,==等,成立返回true ,否則返回false

2)compare() 函式,相同返回0,字典中a先於b,返回-1,否則返回正1

string a="abcdefg";

string b="abcdefg";

string c="123456";

string d="124354";

int m=a.compare(b);//a和整個b比較

int n=a.compare(1,5,b);//a中從1開始的5個字元和b比較

int p=a.compare(0,3,b,4,2);//a中0開始的3個字元和b中4開始的2個字元進行比較

5.修改和替換函式

1)assign()賦值

string str("1234567");

char ch="abcdefg";

string str1;

str1.assign(str);//利用str賦值

cout<2)=賦值

3)erase()

str1.erase(str1.begin()+2);//刪除開始以後的第二個元素

str.erase (10,8);//str[10]以後的8個元素

str1.erase(str1.begin()+2,str1.end()-3);//利用迭代器限制範圍

4)swap()函式

string str = "12345678";

string str1="98776554434";

cout << str1;

str1.swap(str);

cout << str1; //作用可以交換str和str1的值

5)插入insert

str = "ello";

str1 = "h";

str1.insert(1, str);//將str整個插入str1 第乙個字元後

cout << str1;

str = "ello";

str1 = "h";

str1.insert(1, "yanchy", 3);//將「yanchy」三個字元,插入str1 第乙個字元後

cout << str1;

str = "ello";

str1 = "h";

str1.insert(1, str, 2, 2);//將str[2]以後2個字元插入str1 第乙個字元後

cout << str1;

str = "ello";

str1 = "h";

str1.insert(1, 5, 'x');//插入str1 第乙個字元後5個『x'

cout << str1;

str = "ello";

str1 = "h";

str1.insert(str1.begin()+1, str.begin(), str.end());//迭代器插入,begin()+1,插入位置向後移動乙個

cin.get();

7)replace函式

var.replace(3, 3, dest);//var[3]開始的3個字元被dest替換

cout << var;

var = "abceefg";

var.replace(3, 1, dest, 1, 3);//var[3]開始的乙個字元換成dest[1]-dest[3]

cout << var;

var = "abceefg";

var.replace(3, 1, 5, 'x');//var[3]開始的乙個字元換成5個x

cout << var;

var = "abceefg";

var.replace(var.begin(),var.end(),dest);//迭代器替換

cout << var;

cin.get();

6.字串的連線

str=str1+str2;

7.字串的io操作

1)>> ,<< 輸入輸出流

cin>>str;

cout<2)getline(cin,str1) 遇到文傑結束符,分界符,空格,回車,停止輸入。

8.查詢

size_t m = str.find('3', 1);//從str[1]開始查詢,找到返回查詢到的下標,否則返回-1

size_t n = str.rfind('3', 1);//從str[1]開始反向查詢 可以查詢字元和字串

find_first_of  和find_last_of 使用方法同上

find_first_not_of 和find_last_not_of 

8.c_str()

string str ("please split this phrase into tokens");

cstr = new char [str.size()+1];

strcpy (cstr, str.c_str());

9.。substr()

string str = "123456789";

string s2 = str.substr(1, 3);

返回從1開始的3個字元

String類的替換操作

public string replace char oldchar,char newchar 替換指定字元 public string replace charsequence oldchar,charsequence newchar 替換指定字串 public string replaceall...

String類的替換操作

string類有四種替換操作 replace char oldchar,char newchar 返回乙個新的字串,它是通過用newchar替換此字串中出現的所有oldchar得到的。replace charsequence target,charsequence replacement 使用指定的...

String類的基本操作

string類是表示字串的字串類,該類的介面與常規容器的介面基本相同,再新增了一些專門用來操作string的常規操作,string在底層實際是 basic string模板類的別名typedef basic stringstring 不能操作多位元組或者變長字元的序列。在使用string類時,必須包...