下面是代碼實(shí)例 #include <iostream> #include <string>
using namespace std; //20200425 測試字符串操作 公眾號:C與C語言plus
int main() { string s1; cout <<s1 << endl; //沒有賦值輸出為空
string s2(10,'f'); cout <<s2 << endl; //用10個f定義字符串s2,輸出ffffffffff
string s3(s2); cout <<s3 << endl; //用s2定義上,將s3拷貝給s2,s2和s3是不同的字符串, //只是構(gòu)造的時候拷貝s2,修改其中一個不會影響另一個,s3輸出位ffffffffff
string s4(s3.begin(),s3.begin()+s3.size/2); //定義s4用迭代器做參數(shù),從第一個迭代器s3.begin() cout <<s4 << endl; //到第二個迭代器s3的一半即s3.size()/2結(jié)束,s3有10個f,s4輸出為fffff
char *cp = "Hello"; //最后有空字符/0 char c_array[] = "world!!!!"; //最后有空字符/0 char no_null[] = {'H','e','l','l','0'}; //最后沒有空字符/0,不算C語言字符串,只是字符數(shù)組
string ss1(cp); cout <<ss1 << endl; //cp指向的字符串一個一個拷貝到ss1對象里,ssl輸出為Hello
string ss2(c_array,5); cout <<ss2 << endl; //c_array數(shù)組名就是指向第一個字符w的指針,從w開始取5個,ss2為world
string ss3(c_array+5,4); cout <<ss3 << endl; //c_array+5指向第五個字符d,再取4個字符,ss3為!!!!
//string ss4(no_null);//用字符數(shù)組為ss4賦值,因?yàn)檎也坏?0,不知道拷貝幾個會出錯 string ss5(no_null,2); //這次取2個就知道什么時候結(jié)束,不會出錯 cout <<ss5 << endl; //ss5為He
s1 = "Hello"; cout << s1 << endl; //s1輸出Hello
string s6(s1,2); cout << s6 << endl; //用s1初始化s6,2表示字符下標(biāo),從第二個字符開始到最后,s6為llo
string s7(s1,0,2); cout << s7 << endl; //從s10開始取2個,s7為He
string s8(s1,0,8); cout << s8 << endl; //從s1的第一個開始取8個,不夠8個就結(jié)束,s8為Hello
return 0; } 2、修改string對象的方法 與容器共有的 string 操作
下面是代碼實(shí)例 #include <iostream> #include <string>
using namespace std; //20200425 測試字符串操作 公眾號:C與C語言plus
int main() { string s("hello"); string s2("abcdef");
string::iterator p = s.begin(); //迭代器p
s.insert(p,'A'); //在迭代器p指向的s開始之前插入A cout << s << endl; //s為Ahello
s.insert(p,3,'B'); //p指向返回的Ahello的A處,在A之前插入3個B cout << s << endl; //s為BBBAhello
string::iterator b = s2.begin(); //迭代器b string::iterator e = s2.end(); //迭代器e
//p = s.begin(); //p指向s s.insert(p,b,e); //在p指向的s之前插入b和e迭代器范圍內(nèi)的元素abcdef cout << s << endl; //s為abcdefBBBAhello
s = "hello"; cout << s << endl; //s為hello
s.assign(b,e); //s所有的元素倍替換為b到e之間的元素,b與e之間為s2 cout << s << endl; //s為abcdef
s.assign(8,'K'); cout << s << endl; //s為KKKKKKKK
p = s2.begin(); //迭代器p指向s2的a s2.erase(p); //刪除迭代器p指向的元素a cout << s2 << endl; //s2為bcdef
p = s2.begin(); //a被刪除,p指向b p++; //指向c p++; //指向d string::iterator p2 = s2.end(); //p2迭代器指向f p2--; //指向e s2.erase(p,p2); //刪除p指向的d和p2指向的e之間的元素 cout << s2 << endl; //s2為bcf
return 0; } string 類型特有的版本
下面是代碼實(shí)例 #include <iostream> #include <string>
using namespace std; //20200425 測試字符串操作 公眾號:C與C語言plus
int main() { string s("hello"); string s2("abc");
s.insert(0,3,'A'); //在s下標(biāo)是0之前插入3個A cout << s << endl; //s為AAAhello
s.insert(5,s2); //在AAAhello下標(biāo)是5的元素之前插入abc cout << s << endl; //s為AAAheabcllo
s2 = "123456"; s.insert(0,s2,2,3); //在s的下標(biāo)是0之前插入s2下標(biāo)為2開始往后的3個元素345 cout << s << endl; //s為345AAAheabcllo
char *cp = "Stately plup Buck"; s.assign (cp,7); cout << s << endl; //s為Stately
s.assign(cp); //沒有長度,默認(rèn)是拷貝全部 cout << s << endl; //s為Stately plup Buck
s = "hello"; s.insert (0,cp,7); cout << s <<endl; //s為Statelyhello
s.insert(0,cp); cout << s <<endl; //s為Statelyhello
s = "hello"; s2 = "abcdef";
s.assign(s2,2,3); //s2中下標(biāo)為2開始3個元素賦值給s; cout << s <<endl; //s為cde
s.assign(s2); cout << s <<endl; //s為abcdef
s.erase (2,3); //從下標(biāo)為2開始刪除s中的3個元素 cout << s <<endl; //s為abf
s = "123456789"; s.erase(s.size()-5,5); //刪除s中后5個 cout << s <<endl; //s為1234
s.insert(s.size(),5,'!'); //在s下標(biāo)為s.size()處,插入5個! cout << s <<endl; //s為1234?。。。。?/span>
s = "abc"; s.erase(0,1).insert(0,"A"); //先從下標(biāo)為0之前刪除一個a為bc,再插入A cout << s <<endl; //s為Abc
s = "abc"; s[0] = 'A'; //用數(shù)組的方式處理 cout << s <<endl; //s為Abc
return 0; }
下面是代碼實(shí)例: #include <iostream> #include <string>
using namespace std; //20200425 測試字符串操作 公眾號:C與C語言plus
int main() { string s("Hello world"); string s2 = s.substr(6,5); //從第6個開始取5個 cout << s2 << endl ; //s2為world
s2 = s.substr(6); //從第6個開始取拷貝所有的 cout << s2 << endl ; //s2為world
s2 = s.substr(6); //s2拷貝s的全部,相當(dāng)于s2=s cout << s2 << endl ; //s2為Hello world
s = "C++ Primer"; s.append(" 3rd Ed"); //再s最后添加3rd Ed cout << s<< endl ; //s為C++ Primer 3rd Ed
s = "C++ Primer"; s.insert(s.size()," 3rd Ed"); //最后插入 cout << s<< endl ; //s為C++ Primer 3rd Ed
s.replace(11,3,"4th"); //下標(biāo)11開始3個替換4th cout << s<< endl ; //s為C++ Primer 4th Ed
s.replace(11,3,"Fourth"); //下標(biāo)11開始3個替換Fourth cout << s<< endl ; //s為C++ Primer Fourth Ed
s = "C++ Primer 3rd Ed"; //replace相當(dāng)于先刪除后插入 s.erase (11,3); //刪除3rd s.insert(11,"Fourth"); //插入Fourth cout << s<< endl ; //s為C++ Primer Fourth Ed
return 0; }
#include <iostream> #include <string>
using namespace std; //20200425 測試字符串操作 公眾號:C與C語言plus
int main() { string name("AnnaBelle"); string::size_type pos1 = name.find("Bell"); cout << pos1 << endl; //返回下標(biāo)4,如果沒找到返回npos
if(pos1 == string::npos) cout << "沒找到!" << endl; else cout << "找到了!下標(biāo):" << pos1 <<endl;
name = "2sn3"; string numerics("0123456789"); string::size_type pos = name.find_first_of(numerics); //在2sn3中查找0123456789中任意一個第一次出現(xiàn) if(pos == string::npos) cout << "沒找到!" << endl; else cout << "找到了!下標(biāo):" << pos <<endl; //找到了!下標(biāo):1
//其他類型的查找這里就不舉例子了
return 0; } #include <iostream> #include <string> #include <cctype> using std::cout; using std::endl; using std::cin; using std::string; int main(void){ string str1="hi,test,hello"; string str2="hi,test"; //字符串比較 if(str1.compare(str2)>0) printf("str1>str2\n"); else if(str1.compare(str2)<0) printf("str1<str2\n"); else printf("str1==str2\n");
//str1的子串(從索引3開始,包含4個字符)與str2進(jìn)行比較 if(str1.compare(3,4,str2)==0) printf("str1的指定子串等于str2\n"); else printf("str1的指定子串不等于str2\n");
//str1指定子串與str2的指定子串進(jìn)行比較 if(str1.compare(3,4,str2,3,4)==0) printf("str1的指定子串等于str2的指定子串\n"); else printf("str1的指定子串不等于str2的指定子串\n");
//str1指定子串與字符串的前n個字符進(jìn)行比較 if(str1.compare(0,2,"hi,hello",2)==0) printf("str1的指定子串等于指定字符串的前2個字符組成的子串\n"); else printf("str1的指定子串不等于指定字符串的前2個字符組成的子串\n"); return 0;
}
|
|