公司的网站,迁安网站建设,廊坊seo推广公司,7k7k电脑版网页在线玩目录
一、简介#xff1a;
二、string的构造函数
三、string的赋值操作
四、string的取值和修改操作
4.1、string的取值和修改操作 4.2、字符串的取值和修改操作之at方法和重载operator[]方法的区别
五、string的拼接操作
六、string的查找和替换操作
七、string的比较…目录
一、简介
二、string的构造函数
三、string的赋值操作
四、string的取值和修改操作
4.1、string的取值和修改操作 4.2、字符串的取值和修改操作之at方法和重载operator[]方法的区别
五、string的拼接操作
六、string的查找和替换操作
七、string的比较操作
八、string的子串、插入和删除操作
九、string的C风格和C风格 一、简介
string中文意思是字符串string是一个类在C语言中string类型不属于基础类型string是一个模板类实例化就是一个对象。也可以理解为他是一个可以操作字符串的类。
基础类型有八种byte、boolean、char、short、int、float、long、double
string模板类原型
template class CharT, class Traits std::char_traitsCharT, class Allocator std::allocatorCharT
class basic_string; 定义了一个名为basic_string的模板类它有三个模板参数CharT、Traits和Allocator。这些参数分别指定了字符类型、字符特性和分配器类型用于分配内存。
CharT参数表示字符类型通常使用char来表示普通的字符串。Traits参数表示字符操作的特性比如比较、复制等。Allocator参数表示内存分配器类型用于在运行时分配和释放内存。 二、string的构造函数 string类 * string();//默认无参构造函数 * string(const string str);//默认拷贝构造函数 * string(const char *str);//有一个参数的有参构造函数使用char *类型初始化string对象 * string(int n,char c);//有两个参数的有参构造函数第一个参数表示使用的数量第二个参数表示数据即使用n个字符c 初始化string对象 #include iostream
#includestring
using namespace std;/** string();//默认无参构造函数* string(const string str);//默认拷贝构造函数* string(const char *str);//有一个参数的有参构造函数使用char *类型初始化string对象* string(int n,char c);//有两个参数的有参构造函数第一个参数表示使用的数量第二个参数表示数据即使用n个字符c 初始化string对象*/void test(){string str1(hello,world!);//有一个参数的有参构造函数string类的对象是str1coutstr1endl;//可以直接把对象当做字符串遍历string str2(9,H);//有两个参数的有参构造函数。string类的对象是str2coutstr2endl;string str3(str1);//拷贝构造函数coutstr3endl;const char *str4hello,string类;string str5(str4);//一个参数的有参构造函数coutstr5endl;
}int main()
{test();//调用函数return 0;
}输出结果 注意 char *str4hello,string类;虽然编译通过但是会报警告因为这是错误的写法hellostring类是一个常量而char *str4是一个指针类型变量正确的写法应该是 加const修饰修饰指针不可更改即const *str4hello,string类;
三、string的赋值操作 string operator(const char *s);//重载赋值运算符使用c风格的字符串类型赋值给当前对象 string operator (const string str);//把str对象赋值给当前对象 string operator (char c);//字符赋值给当前对象 string assign(const char *s);//把字符串赋值给当前对象 string assign(const char *s,int n);//把字符串s的前n个字符赋值给当前对象 string assign(const string s);//把字符串s赋值给当前对象 string assign(int n,char c);//用n个字符c赋值给当前对象 string assign(const string s,int start,int n);//将s从start开始的n个字符赋值给当前对象 #include iostream
#includestring
using namespace std;void test1(){/*string operator(const char *s);//重载赋值运算符使用c风格的字符串类型赋值给当前对象string operator (const string str);//把str对象赋值给当前对象string operator (char c);//字符赋值给当前对象string assign(const char *s);//把字符串赋值给当前对象string assign(const char *s,int n);//把字符串s的前n个字符赋值给当前对象string assign(const string s);//把字符串s赋值给当前对象string assign(int n,char c);//用n个字符c赋值给当前对象string assign(const string s,int start,int n);//将s从start开始的n个字符赋值给当前对象*/string str1;str1hello,stringC风格赋值操作;string str2;str2str1;//对象赋值string str3;str3H;//字符赋值string str4;const char *str0hello,C风格的字符串;str4.assign(str0);//C风格字符串通过assign函数赋值string str5;str5.assign(str0,5);//前5个字符赋值给当前对象string str6;str6.assign(str5);//把str5对象赋值给str6对象string str7;str7.assign(9,H);//把9个H赋值给当前对象string str8;str8.assign(str4,5,4);//将str4的从第五个字符开始的4个字符赋值给当前对象//遍历8个对象coutstr1endl;coutstr2endl;coutstr3endl;coutstr4endl;coutstr5endl;coutstr6endl;coutstr7endl;coutstr8endl;}int main()
{test1();//调用函数return 0;
}输出结果 注意一个汉字占两个字符 这里使用的是Qt软件 编码格式使用默认的system一般是utf8编码
四、string的取值和修改操作
4.1、string的取值和修改操作 /* char operator[](int n);//重载[]运算符n是下标 char at(int n);//通过at方法获取下标为n的元素 */ #include iostream
#includestring
using namespace std;void test2(){/*char operator[](int n);//重载[]运算符n是下标char at(int n);//通过at方法获取下标为n的元素*/string str1hello,string类;//赋值运算符赋值初始化一般不建议在这里可以用因为是常量不会发生隐式转换string str2(hello,string类);//直接赋值初始化建议使用该方法str2[4]H;//将字符串第五个元素改为Hcoutstr2endl;coutstr2[4]endl;str1.at(1)E;//使用at方法取值然后修改值coutstr1endl;coutstr1[1]endl;}int main()
{test2();//调用函数return 0;
}输出结果 4.2、字符串的取值和修改操作之at方法和重载operator[]方法的区别
使用重载operator[]运算符方法下标越界不会抛出异常
#include iostream
#includestring
using namespace std;void test2(){/*char operator[](int n);//重载[]运算符n是下标char at(int n);//通过at方法获取下标为n的元素*/string str1hello,string类;//赋值运算符赋值初始化一般不建议在这里可以用因为是常量不会发生隐式转换string str2(hello,string类);//直接赋值初始化建议使用该方法str2[4]H;//将字符串第五个元素改为Hcoutstr2endl;coutstr2[4]endl;str1.at(1)E;//使用at方法取值然后修改值coutstr1endl;coutstr1[1]endl;try{str1[100000]H;//数组下标访问越界使用operator[]方法不会抛出异常}catch(exception str){coutstr.what()endl;//接收来自try的异常}printf(hello,string测试\n);//测试}int main()
{test2();//调用函数return 0;
}输出结果 使用at方法下标越界会抛出异常
#include iostream
#includestring
using namespace std;void test2(){/*char operator[](int n);//重载[]运算符n是下标char at(int n);//通过at方法获取下标为n的元素*/string str1hello,string类;//赋值运算符赋值初始化一般不建议在这里可以用因为是常量不会发生隐式转换string str2(hello,string类);//直接赋值初始化建议使用该方法str2[4]H;//将字符串第五个元素改为Hcoutstr2endl;coutstr2[4]endl;str1.at(1)E;//使用at方法取值然后修改值coutstr1endl;coutstr1[1]endl;try{//str1[100000]H;//数组下标访问越界使用operator[]方法不会抛出异常str1.at(100000)H;//抛出异常程序不会终止}catch(exception str){coutstr.what()endl;//接收来自try的异常}printf(hello,string测试\n);//测试}int main()
{test2();//调用函数return 0;
}输出结果 tips:at方法抛出异常之后程序不终止且抛出异常提示该大小只有14个字节100000超过
五、string的拼接操作 /* string operator(const string str);//重载运算符 string operator (const char *str);//c风格 string operator (const char c); string append(const char *s);//append追加方法 string append(const char *str,int n); string append(const string s); string append(const string s,int pos,int n); string append(int n,char c); */ #include iostream
#includestring
using namespace std;void test3(){/*string operator(const string str);//重载运算符string operator (const char *str);//c风格string operator (const char c);string append(const char *s);//append追加方法string append(const char *str,int n);string append(const string s);string append(const string s,int pos,int n);string append(int n,char c);*/string str1hello,string;string str2,world;str1str2;//两个对象相加赋值给str1对象string str3hello,baby;str3欢迎来到这个世界;//C风格相加string str4(you are welcome);str4H;//字符追加string str5(baby);str5.append(hello);//append方法追加string str6(god);str6.append(hello,string,2);//前两个追加给str6对象string str7(luck);str7.append(str6);string str8(hi);str8.append(str4,3,4);string str9(wow);str9.append(9,Q);//遍历coutstr1endl;coutstr2endl;coutstr3endl;coutstr4endl;coutstr5endl;coutstr6endl;coutstr7endl;coutstr8endl;coutstr9endl;
}int main()
{test3();//调用函数return 0;
}输出结果 六、string的查找和替换操作 /* int find(const string str,int pos0) const;//查找str第一次出现的位置从第pos位置开始查找 int find(const char *s,int pos0) const;//查找字符s第一次出现的位置从pos位置开始查找 int find(const char *s,int pos,int n) const;//从pos查找s的前n个字符在当前对象出现的位置 int find(const char c,int pos0) const; int rfind(const string str,int posnpos) const;//查找最后一次出现的位置 int rfind(const char *s,int posnpos) const; int rfind(const char *s,int pos,int n) const; int rfind(const char c,int pos0) const; string replace(int pos,int n,const string str);//replace替换方法从pos开始到n的位置的元素替换为str string replace(int pos,int n,const char *s); */ #include iostream
#includestring
using namespace std;void test4(){/*int find(const string str,int pos0) const;//查找str第一次出现的位置从第pos位置开始查找int find(const char *s,int pos0) const;//查找字符s第一次出现的位置从pos位置开始查找int find(const char *s,int pos,int n) const;//从pos查找s的前n个字符在当前对象出现的位置int find(const char c,int pos0) const;int rfind(const string str,int posnpos) const;//查找最后一次出现的位置int rfind(const char *s,int posnpos) const;int rfind(const char *s,int pos,int n) const;int rfind(const char c,int pos0) const;string replace(int pos,int n,const string str);//replace替换方法从pos开始到n的位置的元素替换为strstring replace(int pos,int n,const char *s);*/string str1helllo,string;string str2lll;int find1str1.find(str2);int find2str1.find(lll);int find3str1.find(good,2,3);int find4str1.find(h);int rfind5str1.rfind(str2);//最后一次出现的位置其实就是逆序查找int rfind6str1.rfind(lll);int rfind7str1.rfind(wow,1,2);int rfind8str1.rfind(l);//替换replacestring str3replace functions;string str4#########;str3.replace(2,4,str4);//从下标为2开始的元素到下标为4结尾的元素替换为str4的元素string str5good study;str5.replace(2,4,嗨);string str6http://www.good.sex.666.sex.age.999.age.com.cn;//将sex和age敏感词屏蔽sex用*,age用#while (1) {int retstr6.find(sex);int ret1str6.find(age);if(ret-1ret1-1){break;}str6.replace(ret,3,***);str6.replace(ret1,3,###);}//遍历coutfind1endl;coutfind2endl;coutfind3endl;coutfind4endl;coutrfind5endl;coutrfind6endl;coutrfind7endl;coutrfind8endl;coutstr3endl;coutstr5endl;coutstr6endl;}int main()
{test4();//调用函数return 0;
}输出结果 七、string的比较操作 /* compare方法在返回1返回-1返回0; 字符比较根据ASCII码表进行比较 int compare(const string s) const; int compare(const char *s) const; */ #include iostream
#includestring
using namespace std;void test5(){/*compare方法在返回1返回-1返回0;字符比较根据ASCII码表进行比较int compare(const string s) const;int compare(const char *s) const;*/string str1(hello,string);string str2(helllo,string);if(str1.compare(str2)0){cout相等endl;}else if(str1.compare(str2)0){coutstr1大于str2endl;}else{coutstr1小于str2endl;}if(str2.compare(hello)0){cout相等endl;}else if(str2.compare(hello)0){coutstr2大于helloendl;}else{coutstr2小于helloendl;}}int main()
{test5();//调用函数return 0;
}输出结果 tips:通过输出结果可知compare方法是逐个字符进行比较
八、string的子串、插入和删除操作 /* string substr(int pos0,int nnpos) const;//返回由pos开始的到n组成的字符串 string insert(int pos,const char *s);//从pos位置插入s string insert(int pos,const string str); string insert(int pos,int n,char c);//指定的位置pos插入n个c string erase(int pos,int nnpos);//删除从pos开始的n个元素 */ #include iostream
#includestring
using namespace std;void test6(){/*string substr(int pos0,int nnpos) const;//返回由pos开始的到n组成的字符串string insert(int pos,const char *s);//从pos位置插入sstring insert(int pos,const string str);string insert(int pos,int n,char c);//指定的位置pos插入n个cstring erase(int pos,int nnpos);//删除从pos开始的n个元素*/string str1hello,string;string str2str1.substr(2,3);coutstr2endl;string str3hello,you are welcome in my eye you are beautiful;int s0;while (1) {int retstr3.find( ,s);//find方法如果查找到了返回下标位置查找不到返回-1if(ret-1){coutstr3.substr(s,str3.size()-s)endl;break;}coutstr3.substr(s,ret-s)endl;sret1;}string str4hello,string;str4.insert(3,######);coutstr4endl;str4.insert(1,str1);coutstr4endl;str4.insert(2,4,H);coutstr4endl;string str5good,good,stud;str5.erase(3,4);//删除3到4位置的元素coutstr5endl;
}int main()
{test6();//调用函数return 0;
}输出结果 九、string的C风格和C风格 /* * c语言中是没有string类型因为string是类是模板类所以c语言使用指针来使用字符串 * c使用了C风格的字符串就是这么来的 */ #include iostream
#includestring
using namespace std;void test7(){/** c语言中是没有string类型因为string是类是模板类所以c语言使用指针来使用字符串* c使用了C风格的字符串就是这么来的*///C风格字符串const char *str1hello,C_string;string str2str1;coutstr2endl;//c风格字符串string str3hello,C_string;coutstr3endl;//c风格转换为c风格const char *str4str3.c_str();coutstr4endl;//使用c_str方法可以将c对象转换为c语言风格的char指针类型
}int main()
{test7();//调用函数return 0;
}输出结果 string类的使用介绍完毕啦。
真心耗时 文章转载自: http://www.morning.mwpcp.cn.gov.cn.mwpcp.cn http://www.morning.ysbhj.cn.gov.cn.ysbhj.cn http://www.morning.wjpsn.cn.gov.cn.wjpsn.cn http://www.morning.pgzgy.cn.gov.cn.pgzgy.cn http://www.morning.qzglh.cn.gov.cn.qzglh.cn http://www.morning.tpyjr.cn.gov.cn.tpyjr.cn http://www.morning.wpqcj.cn.gov.cn.wpqcj.cn http://www.morning.dpflt.cn.gov.cn.dpflt.cn http://www.morning.mdgpp.cn.gov.cn.mdgpp.cn http://www.morning.bhwll.cn.gov.cn.bhwll.cn http://www.morning.ymjgx.cn.gov.cn.ymjgx.cn http://www.morning.kdnrp.cn.gov.cn.kdnrp.cn http://www.morning.mfjfh.cn.gov.cn.mfjfh.cn http://www.morning.xrrjb.cn.gov.cn.xrrjb.cn http://www.morning.wbfly.cn.gov.cn.wbfly.cn http://www.morning.tjsxx.cn.gov.cn.tjsxx.cn http://www.morning.jrlxz.cn.gov.cn.jrlxz.cn http://www.morning.cthrb.cn.gov.cn.cthrb.cn http://www.morning.fthcn.cn.gov.cn.fthcn.cn http://www.morning.rfpq.cn.gov.cn.rfpq.cn http://www.morning.gsjw.cn.gov.cn.gsjw.cn http://www.morning.cprls.cn.gov.cn.cprls.cn http://www.morning.fqljq.cn.gov.cn.fqljq.cn http://www.morning.fpkpz.cn.gov.cn.fpkpz.cn http://www.morning.hnmbq.cn.gov.cn.hnmbq.cn http://www.morning.hcqd.cn.gov.cn.hcqd.cn http://www.morning.zbkdm.cn.gov.cn.zbkdm.cn http://www.morning.fplqh.cn.gov.cn.fplqh.cn http://www.morning.knlyl.cn.gov.cn.knlyl.cn http://www.morning.hqgxz.cn.gov.cn.hqgxz.cn http://www.morning.lzjxn.cn.gov.cn.lzjxn.cn http://www.morning.lnfkd.cn.gov.cn.lnfkd.cn http://www.morning.snrhg.cn.gov.cn.snrhg.cn http://www.morning.kkwgg.cn.gov.cn.kkwgg.cn http://www.morning.sfhjx.cn.gov.cn.sfhjx.cn http://www.morning.sffwz.cn.gov.cn.sffwz.cn http://www.morning.jbfjp.cn.gov.cn.jbfjp.cn http://www.morning.xhddb.cn.gov.cn.xhddb.cn http://www.morning.wbfly.cn.gov.cn.wbfly.cn http://www.morning.ryzgp.cn.gov.cn.ryzgp.cn http://www.morning.srgbr.cn.gov.cn.srgbr.cn http://www.morning.wslpk.cn.gov.cn.wslpk.cn http://www.morning.rkjb.cn.gov.cn.rkjb.cn http://www.morning.tzcr.cn.gov.cn.tzcr.cn http://www.morning.zrkws.cn.gov.cn.zrkws.cn http://www.morning.dyxlm.cn.gov.cn.dyxlm.cn http://www.morning.fbylq.cn.gov.cn.fbylq.cn http://www.morning.snrhg.cn.gov.cn.snrhg.cn http://www.morning.grynb.cn.gov.cn.grynb.cn http://www.morning.mmosan.com.gov.cn.mmosan.com http://www.morning.kndst.cn.gov.cn.kndst.cn http://www.morning.wzjhl.cn.gov.cn.wzjhl.cn http://www.morning.txlxr.cn.gov.cn.txlxr.cn http://www.morning.njntp.cn.gov.cn.njntp.cn http://www.morning.fmtfj.cn.gov.cn.fmtfj.cn http://www.morning.bsqbg.cn.gov.cn.bsqbg.cn http://www.morning.dfojgo.cn.gov.cn.dfojgo.cn http://www.morning.lkfsk.cn.gov.cn.lkfsk.cn http://www.morning.brscd.cn.gov.cn.brscd.cn http://www.morning.duqianw.com.gov.cn.duqianw.com http://www.morning.mjjty.cn.gov.cn.mjjty.cn http://www.morning.yymlk.cn.gov.cn.yymlk.cn http://www.morning.dzgyr.cn.gov.cn.dzgyr.cn http://www.morning.xqbbc.cn.gov.cn.xqbbc.cn http://www.morning.lwrks.cn.gov.cn.lwrks.cn http://www.morning.rxtxf.cn.gov.cn.rxtxf.cn http://www.morning.mwpcp.cn.gov.cn.mwpcp.cn http://www.morning.qnpyz.cn.gov.cn.qnpyz.cn http://www.morning.hdtcj.cn.gov.cn.hdtcj.cn http://www.morning.poapal.com.gov.cn.poapal.com http://www.morning.kehejia.com.gov.cn.kehejia.com http://www.morning.phcqk.cn.gov.cn.phcqk.cn http://www.morning.cfhwn.cn.gov.cn.cfhwn.cn http://www.morning.hcxhz.cn.gov.cn.hcxhz.cn http://www.morning.gstmn.cn.gov.cn.gstmn.cn http://www.morning.nlgmr.cn.gov.cn.nlgmr.cn http://www.morning.wcjgg.cn.gov.cn.wcjgg.cn http://www.morning.rytps.cn.gov.cn.rytps.cn http://www.morning.jgncd.cn.gov.cn.jgncd.cn http://www.morning.qggxt.cn.gov.cn.qggxt.cn