您好,登錄后才能下訂單哦!
1、string
string的初始化,在C++中字符串是一種數據類型;
(1)、string的初始化,遍歷,字符串連接
代碼如下:
#include<iostream> #include<string> #include<stdio.h> using namespace std; int main(void){ //string的初始化,在C++中字符串是一種數據類型; string s1 = "abcdefg"; string s2("abcdefg"); string s3(s2); string s4 = s1; //調用拷貝構造函數; string s5(10, 'a');//10個空間中的字符都是'a'; s5 = s1; cout<<"s3:"<<s3<<endl; cout<<"s5:"<<s5<<endl; //string的遍歷,重載了[]操作符; //1、數組方式遍歷[] for(int i = 0; i < s1.length(); i++){ cout<<s1[i]<<" "; //出現錯誤(下標越界),不會向外面剖出異常,引起程序的中斷; } cout<<endl; //2、迭代器 string::iterator it; for(it = s1.begin(); it != s1.end(); it++){ cout<<*it<<" "; } cout<<endl; //3、函數at()遍歷 for(int i = 0; i < s1.length(); i++){ cout<<s1.at(i)<<" "; //會剖出異常,合理的解決下標越界; } cout<<endl; //字符指針和string的轉換 //此時,把s1====>char * 把內存首地址給露出來; printf("s1:%s \n", s1.c_str()); //s1中的內容拷貝到buf中; char buf[123] = {0}; s1.copy(buf, 2, 0);//n, pos;下標從0開始拷貝2個字符到buf中,不會是C風格的,注意自己加上0結束標志; cout<<buf<<endl; //string子符串的連接 s1 = s1 + s2; //直接+就表:字符串的連接; s1 += s2; //+=也是字符串的連接; s1.append(s4); //調用方法append()也是字符串的連接; cout<<s1<<endl; return 0; }
運行結果:
(2)、string的查找,替換
代碼如下:
#include<iostream> #include<string> #include<string.h> using namespace std; int main(void){ //字符串的查找和替換 string s1 = "wbm hello wbm 111 wbm 222 wbm 333"; //1、第一次出現wbm的下標 int index = s1.find("wbm", 0); cout<<"index :"<<index<<endl; //2、求wbm每一次出現的數組下標 /* int offindex = s1.find("wbm", 0); while(offindex != -1){ cout<<"offindex :"<<offindex<<endl; offindex += strlen("wbm"); offindex = s1.find("wbm", offindex); }*/ //3、把小寫wbm換成大寫 int offindex = s1.find("wbm", 0); while(offindex != -1){ cout<<"offindex :"<<offindex<<endl; s1.replace(offindex, strlen("wbm"), "WBM"); //從下標offindex開始,刪除n個字符,替換為后面的字符; offindex += strlen("wbm"); offindex = s1.find("wbm", offindex); } cout<<"s1:"<<s1<<endl; string s3 = "aaa bbb ccc"; s3.replace(0, 3, "AAA"); //替換的函數; cout<<"s3:"<<s3<<endl; return 0; }
運行結果:
(3)、區間的刪除和插入
代碼如下:
#include<iostream> #include<string> #include<algorithm> using namespace std; int main(void){ //區間刪除和插入 string s1 = "hello1 hello2 hell03"; string::iterator it = find(s1.begin(), s1.end(), 'l'); if(it != s1.end()){ s1.erase(it); //刪除算法; } cout<<"s1 :"<<s1<<endl; s1.erase(s1.begin(), s1.end()); //刪除從pos開始的n個字符; cout<<"s1全部刪除:"<<s1<<endl; cout<<"s1的長度:"<<s1.length()<<endl; string s2 = "BBB"; s2.insert(0, "AAA"); //頭插法 s2.insert(s2.length(), "CCC");//尾插法 cout<<s2<<endl; return 0; }
運行結果:
(4)、string的大小寫轉換-->函數指針
代碼如下:
#include<iostream> #include<string> #include<algorithm> using namespace std; int main(void){ string s1 = "AAAbbb"; transform(s1.begin(), s1.end(), s1.begin(), 0, toupper);//toupper可以是:函數的入口地址,函數對象, cout<<s1<<endl; string s2 = "AAAbbb"; transform(s2.begin(), s2.end(), s2.begin(), 0, tolower); cout<<s2<<endl; return 0; }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。