C++STL学习笔记_(1)string知识
/*============================================ string是STL的字符串类型,通常用来表示字符串 = ============================================*/ #include <iostream> using namespace std; #include "string"//string的头文件 #include "algorithm" /*============================================ string对象的初始化 = ============================================*/ void main21() { string s1 = "aaa"; //第一种初始化方法 string s2("bbb"); //第二种初始化的方法 string s3 = s2; //通过拷贝构造函数来初始化对象s3 string s4(10,'a'); //用n个字符c初始化 cout<<"s1:"<<s1<<endl; cout<<"s2:"<<s2<<endl; cout<<"s3:"<<s3<<endl; cout<<"s4:"<<s4<<endl; } /*============================================ string的遍历 = ============================================*/ void main22() { string s1 = "abcdefg"; //1.数组方式 for (int i = 0;i<s1.length();i++) { cout<<s1[i]<<" ";//出现错误不抛异常,引起程序的中断 } //2.通过迭代器的方式 for (string::iterator it = s1.begin();it != s1.end();it++) { cout<<*it<<" "; } cout<<endl; //3.string的at方式 for (int i = 0;i<s1.length();i++) { cout<<s1.at(i)<<" ";//可以抛出异常 } try { for (int i = 0;i<s1.length() + 3;i++) { cout<<s1.at(i)<<" "<<endl;//可以抛出异常 } } catch (...) { cout<<"发生异常"<<endl; } } //字符指针和string的转换 void main23() { string s1 = "aaa bbb";//char*====>string //s1====>char * printf("s1:%s\n",s1.c_str()); //char*====>string //s1的内容拷贝到buf中 char buf1[128] = {0}; s1.copy(buf1,3,0);//注意,只给你copy3个字符 不会变为C风格的字符串 cout <<"buf1:"<<buf1<<endl; } //链接字符串 void main24() { string s1 = "aaa"; string s2 = "bbb"; s1 = s1 + s2; cout<<"s1:"<<s1<<endl; string s3 = "333"; string s4 = "444"; s3.append(s4); cout<<"s3:"<<s3<<endl; } //字符串的查找和替换 void main25() { string s1 = "wbm hello wbm 111 wbm 222 wbm 333"; //第一次出现wbm的 index int index = s1.find("wbm",0);//位置下标是从0开始的 cout<<"index:"<<index<<endl; //求wbm每次出现的数组下标 int offindex = s1.find("wbm",0); while(offindex != string::npos) { cout<<"offindex:"<<offindex<<endl; offindex = offindex + 1; offindex = s1.find("wbm",offindex); } //案例2 string s3 = "aaa bbb ccc"; s3.replace(0,3,"AAA"); cout<<"s3:"<<s3<<endl; offindex = s1.find("wbm",0); while(offindex != string::npos) { cout<<"offindex:"<<offindex<<endl; s1.replace(offindex,3,"WBM"); offindex = offindex + 1; offindex = s1.find("wbm",offindex); } cout <<"s1:"<<s1<<endl; } //截断(区间删除)和插入 void main26() { string s1 = "hello hello2 hello1"; //string &eras(int pos = 0,int n = pos);删除pos开始的n个字符,返回修改后的字符串 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()); cout<<"s1删除以后的结果:"<<s1<<endl; cout<<"s1长度:"<<s1.length()<<endl; string s2 = "BBB"; s2.insert(0,"AAA"); //头插法 cout<<"s2结果:"<<s2<<endl; s2.insert(s2.length(),"CCC"); //尾插法 cout<<"s2结果:"<<s2<<endl; } void main27() { string s1 = "AAAbbb"; //1.函数的入口地址 2.函数对象 3.预定的函数 transform(s1.begin(),s1.end(),s1.begin(),toupper); //全部变为大写 cout <<"s1:"<<s1 <<endl; string s2 = "AAAbbb"; transform(s1.begin(),s1.end(),s2.begin(),tolower); //全部变为小写 cout <<"s2:"<< s2 <<endl; } int main() { //main21(); //main22(); //main23(); //main24(); //main25(); //main26(); main27(); return 0; }