string相关学习笔记
来源:互联网 发布:网络4大粪坑 编辑:程序博客网 时间:2024/06/17 06:37
#include <iostream>#include<string>using namespace std;int main(){ //string的几种构造函数初始化 string s0 ("Initial string");//也可以直接这样:s0="Initial string"; cout<<s0<<endl;//输出:Initial string string s1; cout<<s1<<endl;//输出为空 string s2 (s0);//用另一个对象做初始化 cout<<s2<<endl;//输出:Initial string string s3 (s0, 8, 3);//以对象s0字符串下标8开始连续3个赋给s3 cout<<s3<<endl;//输出:str string s4 ("A character sequence"); cout<<s4<<endl; string s5 ("Another character sequence", 12);//以字符串的前12个字符做初始化 cout<<s5<<endl;//输出:Another char string s6 (10, 'x');//以10个x做初始化 cout<<s6<<endl;//输出:xxxxxxxxxx string s7 (10, 42); //以10个ASCII编码值为42的字符做初始化 cout<<s7<<endl;//输出:********** string s8 (s0.begin(), s0.begin()+7);//以s0的一段做初始化,但不包括s0.begin()+7 cout<<s8<<endl;//输出:Initial return 0;}int main(){ /********************************** * *append():给对象尾部追加一些字符 * **********************************/ string s0("abcd");//s0="abcd" s0.append("ef");//s0="abcdef" string s1="123456789"; s0.append(s1,3,5);//从s1的下标3处开始添加5个字符 cout<<s0<<endl;//s0=abcdef45678 string s2="111"; s2.append(3,'2');//追加3个字符2,第二个参数也可以写ASCII值 cout<<s2<<endl;//s2=111222 string s3="abcd"; s3.append(s1.begin()+3,s1.begin()+6);//把s1的一段字符追加上 cout<<s3<<endl;//s3=abcd456 return 0;}int main(){/********************************************************************** //assign()函数的几种用法 string s0="123456"; string base="abcdefghijklmnopq"; s0.assign(base);//s0="abcdefgh" s0.assign(base,3,2);//s0="de" s0.assign("987654321",7);//s0="9876543" s0.assign(3,'a');//s0="aaa" s0.assign(base.begin()+2,base.end()-5);//s0="cdefghijkl"***********************************************************************//***************************************************** //at()函数的用法 string str ("123456789"); str.at(5)='0';//修改下标为5的值 cout<<str<<endl;//str="123450789" cout<<str.at(2);//访问下标为2的值,输出为:3************************************************//****************************************************** //clear(),compare()用法 string s="12345"; s.clear();//清空s string s1="defghilkjh"; string s2="abcdefgh"; s1.compare(s2);//把字符串s1与s2比较,s1大于s2,返回1;s1等于s2,返回0,小于返回-1 s1.compare(3,4,"abcd");//从s1下标3开始截取连续4个字符与"abcd"比较。 s1.compare(1,2,s2,2,3);//从s1,s2截取一段比较。**********************************************************//*********************************************************** //copy()函数的笔记 //size_t copy (char* s, size_t len, size_t pos = 0) const; char buf[20]; string s0(8,'a'); cout<<s0<<endl; string s1; s1.resize(10); size_t s=s0.copy(buf,5,0);//5代表拷贝5个字符,0代表从下标0开始,buf代表拷贝到的地方 //这个函数返回值为:拷贝的字符个数 //注意,我把参数buf改成s1,会报错。 buf[s]='\0'; cout<<buf<<endl;//buf="aaaaa"*******************************************************************/ return 0;}int main(){/************************************************** //c_str()函数用法:const char* c_str() const; char p[20]; string s("abcdef"); s.c_str();//函数返回一个指向正规C字符串的指针,但不能用char *p来接收。 strcpy(p,s.c_str());//只能这么用 cout<<p<<endl;//字符数组p=abcdef const char *b=s.c_str(); cout<<b<<endl;//b=s*****************************************************//***************************************************** //data()的用法:与c_str()函数类似 //const char* data() const; char p0[20]; string s0="123456"; strcpy(p0,s0.data());//p0=s0 const char *a0=s0.data();//a0=s0 cout<<a0<<endl;******************************************************//************************************************* //erase()函数的用法 string s("123456"); s.erase(0,2);//s="3456" string s1("123456789"); s1.erase(s1.begin()+1,s1.begin()+3);//s1="1456789" string s2("123456789"); s2.erase(s2.begin());//s2="23456789"**********************************************/ return 0;}int main(){ /********************************************************************************************** //(1)size_t find (const string& str, size_t pos = 0) const; //查找对象--string类对象 //(2)size_t find (const char* s, size_t pos = 0) const; //查找对象--字符串 //(3)size_t find (const char* s, size_t pos, size_t n) const; //查找对象--字符串的前n个字符 //(4)size_t find (char c, size_t pos = 0) const; //查找对象--字符 string s0="123456789"; string s1="456"; int a=s0.find(s1);//在s0中找到s1,返回s0的起始下标,a=3;找不到返回空 s0.find("34",2,2);//第一个参数代表查找的字符串,第二个参数代表从s0查找的起始下标,第三个参数从选定的起始下标开始,查找字符个数 //找到了返回起始下标,找不到,返回-1 char c='6'; cout<<s0.find(c,3);//在s0中查找一个字符c,从下标3开始,找到返回下标,找不到返回一个未知数;第一个参数也可以传一个字符串 *********************************************************************************************************//*************************************************************************************************8 //find_first_not_of() //返回在字符串中首次出现的不匹配str中的任何一个字符的首字符索引, 从index开始搜索, 如果全部匹配则返回string::npos。 //size_type find_first_not_of(const string &str,size_type index =0 )const; //size_type find_first_not_of(const Char* str,size_type index =0 )const; //从index开始起搜索当前字符串, 查找其中与str前num个字符中的任意一个都不匹配的序列, 返回满足条件的第一个字符索引, 否则返回string::npos。 //size_type find_first_not_of(const Char* str,size_type index,size_type num )const; //返回在当前字符串中第一个不匹配ch字符的索引, 从index开始搜索, 没用收获则返回string::npos。 //size_type find_first_not_of(Char ch,size_type index =0 )const; string s0="abcdefgh"; string s1="abcdef"; cout<<s0.find_first_not_of(s1);//从下标0开始,与s1中开始比较,找到第一个不匹配的字符,返回下标,相等返回一个未知数。 cout<<s0.find_first_not_of("cb",2,3);//从s0的下标2开始查找3个字符中首次与字符串不匹配的字符,并返回其下标。***********************************************************************************************************************//*********************************************************************************************** //find_first_of()笔记: string s0="123456789"; string s1="456"; //从s0的下标1开始(第二个参数可以不写,默认从0开始),找到首次与s1中第一个字符相同的字符并返回其下标。 cout<<s0.find_first_of(s1,1)<<endl; //从s0的下标1开始,查找与字符串“abc79”的前三个字符中某个字符首次匹配,返回在s0中下标值。 cout<<s0.find_first_of("abc79",1,3)<<endl;***************************************************************************************************//*************************************************************************************** //(1)size_t find_last_not_of (const string& str, size_t pos = npos) const; //(2)size_t find_last_not_of (const char* s, size_t pos = npos) const; //(3)size_t find_last_not_of (const char* s, size_t pos, size_t n) const; //(4)size_t find_last_not_of (char c, size_t pos = npos) const; string s0="abcdefghijk"; string s1="abd"; //从s0下标7开始(不写7从最后一位开始)与s0匹配(倒着走,7下来是6),返回首次字符不匹配的下标。这里返回是7 cout<<s0.find_last_not_of(s1,7); //其他几个函数与find_first_not_of()类似*************************************************************************************/ //(1)size_t find_last_of (const string& str, size_t pos = npos) const; //(2)size_t find_last_of (const char* s, size_t pos = npos) const; //(3)size_t find_last_of (const char* s, size_t pos, size_t n) const; //(4)size_t find_last_of (char c, size_t pos = npos) const; string a="cde456"; string b="1234"; cout<<a.find_last_of(b);//意思与find_last_not_of()差不多,只是找的是首次匹配的 return 0;}int main(){ //没有back(),cbegin(),cend()函数 //compare()笔记// int compare (const string& str) const;// int compare (size_t pos, size_t len, const string& str) const;// int compare (size_t pos, size_t len, const string& str,size_t subpos, size_t sublen) const;// int compare (const char* s) const;// int compare (size_t pos, size_t len, const char* s) const;// int compare (size_t pos, size_t len, const char* s, size_t n) const; string s0="bcdefgh"; string s1="bcdefgh"; //cout<<s0.compare(s1);//s0>s1 返回值大于0(具体值怎么计算没搞懂);小于返回值小于0,相等等返回0 cout<<s0.compare(3,8,"fg");//第一个参数表示从s0的哪个下标开始比较;第二个为比较的字符个数,第三个为与s0比较的字符串 cout<<s0.compare(0,2,s1,2,1);//最后两个参数分别表示字从符串s1的下标2开始选一个字符比较。 return 0;}int main(){/************************************** 没有front()函数 insert()函数:(1)string& insert (size_t pos, const string& str);(2)string& insert (size_t pos, const string& str, size_t subpos, size_t sublen);(3)string& insert (size_t pos, const char* s);(4)string& insert (size_t pos, const char* s, size_t n);(5)string& insert (size_t pos, size_t n, char c); void insert (iterator p, size_t n, char c);(6)iterator insert (iterator p, char c);(7)template <class InputIterator> void insert (iterator p, InputIterator first, InputIterator last);**************************************/ //以下是关于insert()函数的示例 string str="012345"; string str2="6"; string str3="000abcd"; string::iterator it; //str.insert(6,str2);//str="0123456" //str.insert(6,str3,3,4);//str="012345abcd //str.insert(5," 3210abc",3);//str="01234 325" //str.insert(1,"to be");//str="0to be12345" //str.insert(6,3,':');//str="012345:::" //it = str.insert(str.begin()+5,',');//str="012345,"; *it=',' //str.insert (str.end(),3,'.');//str="012345..." str.insert (str.begin()+2,str3.begin(),str3.begin()+3); //str="010002345" return 0;}int main(){/****************************************************** //size()、length()、capacity()、max_size()示例 string str; for(int i=0;i<100;i++) str.push_back(i); cout << "size: " << str.size() << "\n"; cout << "length: " << str.length() << "\n"; cout << "capacity: " << str.capacity() << "\n"; cout << "max_size: " << str.max_size() << "\n";//输出结果codeblocks下://size: 100//length: 100//capacity: 128//max_size: 1073741820*************************************************************//******************************************// "+="、"="的重载:示例如下 string name ("John"); string family ("Smith"); name += " K. ";//name="John K. " name += family;//name="John K. Smith" string s; s="123"; cout<<s;//输出123 //还有[]的重载,不做示例********************************************//************************************************ //rbegin()、rend()练习示例 string s0="123456789"; string::reverse_iterator rit=s0.rbegin(); int i=0; while(i<9)//输出结果为:987654321 { cout<<*rit; rit++; i++; } rit=s0.rend(); cout<<endl<<*rit;//输出空 rit--; cout<<endl; while(i>0)//输出为:123456789 { cout<<*rit; rit--; i--; }****************************************************/ return 0;}int main(){/***************************************************************************************** //replace()用法示例 string base="this is a test string."; string str2="n example"; string str3="sample phrase"; string str4="useful."; string str=base; str.replace(9,5,str2);//从str的下标9开始的连续5个字符用str2代替,若5改为0就相当于插入了 //str="this is an example string." str.replace(19,6,str3,7,6);//从str的下标19开始的连续6个字符用从str3的下标7开始连续6个字符代替 //str="this is an example phrase." str.replace(8,10,"just a");//从str的下标8开始的连续10个字符用"just a"代替 // str="this is just a phrase." str.replace(8,6,"a shorty",7); //从str的下标8开始的连续6个字符用"a shorty"的前7个字符代替 //str="this is a short phrase." str.replace(22,1,3,'!');//从str的下标22开始的连续1个字符用3个'!'代替 //str="this is a short phrase!!!" str.replace(str.begin(),str.end()-3,str3);//把str从str.begin()到str.end()-3用str3代替。 // str="sample phrase!!!"************************************************************************************************//*******************************************///reserve(),resize()函数作用 string s; for(int i=0;i<100;i++) s.push_back(i); //void reserve (size_t n = 0); //s.reserve();//从新设置capacity的大小,参数不不写默认为0,如果设置的小于本身size的大小,不会改变capacity.// 函数原型: //void resize (size_t n); //void resize (size_t n, char c); //s.resize(10);//会改变size大小,影响capacity(原先capacity如果小于新设置的size,否则不会改变) string s1="45678"; s1.resize(10,'a');//第二个参数代表当设置的size大于原先的size时,剩余的位置补'a'./***********************************************/ return 0;}int main(){ //rfind()几种用法:/*****************************************************************************第一个参数表示要找的字符,第二个参数表示从那个地方开始向前找,找到返回第一个字符索引,找不到返回随机数 string (1)size_t rfind (const string& str, size_t pos = npos) const; c-string (2)size_t rfind (const char* s, size_t pos = npos) const; buffer (3)size_t rfind (const char* s, size_t pos, size_t n) const; character (4)size_t rfind (char c, size_t pos = npos) const;*******************************************************************************/// string str="123456";// string s("456");// cout<<str.rfind(s,5);//输出3/*********************************************************************** //substr()函数作用:// string substr (size_t pos = 0, size_t len = npos) const; string s0="123654"; cout<<s0.substr(0,1);//从s0的下标0开始截取1个字符;并返回所截取字符串。**************************************************************************//******************************************************************// swap()函数:// void swap (string& str); string s0="4567"; string s1="123"; s1.swap(s0);//交换两个string类型的字符串s1="4567",s0="123"********************************************************************/ string s; getline(cin,s); cout<<s; return 0;}
阅读全文
0 0
- string相关学习笔记
- java学习笔记-String相关知识点
- 【Java学习笔记】String相关语句
- String相关学习
- String相关方法学习
- java String date,相关笔记
- String相关知识点的学习
- C#学习笔记(string)
- String深入学习笔记
- 学习笔记之string
- String深入学习笔记
- String学习笔记
- String 对象学习笔记
- Java学习笔记:String
- String的学习笔记
- Attributed String学习笔记
- 【Stl学习笔记】String
- String类学习笔记
- C++标准IO库梳理参考
- 研发人员如何打造良性的工作系统
- Linux 文件基本属性
- arcgis for javascript 动态加载显示图层(下拉框和checkbox结合使用)
- 链家面经:一面跪
- string相关学习笔记
- 拧拉放电
- python 列表切割
- ida又一神器插件复活了bindiff
- spring面试题
- HDU6083 度度熊的午饭时光
- 【背包专题】K
- STM32F2位带操作
- 组建AR、VR和MR的硬件共享实验室,你认为可能吗?