STL-string用法
来源:互联网 发布:淘宝店招图片怎么做 编辑:程序博客网 时间:2024/06/04 21:13
c++中自带的字符串类string在处理字符串的时候会比字符数组方便很多,而且可以直接与其他嵌套使用;头文件为#include<cstring>
1.创建对象和赋值
#include<bits/stdc++.h>using namespace std;int main(){string str;//创建一个字符串变量strstr="hello"; cout<<str<<endl;}
#include<bits/stdc++.h>using namespace std;int main(){string str1,str2;//我们来看一下覆盖赋值str1="hello,world";str2="nice";cout<<"str1:"<<str1<<endl<<"str2:"<<str2<<endl<<endl;str1=str2;cout<<"str1:"<<str1<<endl<<"str2:"<<str2<<endl;//覆盖赋值跟c语言中整形变量的覆盖赋值一样,会直接覆盖; }2.字符串的连接和比较
连接在这里我们可以直接使用‘+’运算符;
#include<bits/stdc++.h>using namespace std;int main(){string str,str2;str="h";str=str+'e';//在尾部加一个字母e cout<<str<<endl;str=str+"llo";//在尾部加一个串llo cout<<str<<endl;str2=",world!";str=str+str2;//加另一个字符串 cout<<str<<endl;}
比较也可以直接用'>''<''=="
#include<bits/stdc++.h>using namespace std;int main(){string str1="abd",str2="abc";if(str1>str2){cout<<"str1>str2"<<endl;str2="abe";//更改str2的值使str1<str2}if(str1<str2){cout<<"str1<str2"<<endl;str2="abd";//更改str2的值使str1==str2}if(str1==str2){cout<<"str1==str2"<<endl;}return 0;}
3.访问string对象的元素;
我们想访问字符串中的某个位置的字符的时候c语言的那种方式依旧可以用;
#include<bits/stdc++.h>using namespace std;int main(){string str="0123456789";cout<<str[5]<<endl;return 0;}
substr(int pos,int n);意思是从第pos位开始输出n个字符;可以访问其中某一段,这对汉字的输出起到了很大的便利,因为汉字占两个位置按上边的方法输出是不行的;
#include<bits/stdc++.h> using namespace std;int main(){string s="你好";cout<<"*"<<s[0]<<endl;//看一下按上边那种输出方式,输出的是什么 cout<<s.substr(0,2)<<endl;//第一个参数为第几位,第二个为输出几个字符;汉字两个 cout<<s.substr(2,2)<<endl;}4.插入字符或字符串insert()函数;插入到指定位置之前;(这个位置是迭代器位置,迭代器是什么我也不太理解)
#include<bits/stdc++.h>using namespace std;int main(){string str="12345";str.insert(1,"hello");//在1位置插入hello str.insert(str.begin(),'S');//这种只能插入一个字符;str.begin()返回开始位置的迭代器 str.insert(str.end(),5,'x');//在末尾插入5个x str.end()返回结束位置的迭代器cout<<str<<endl;return 0;}5.删除元素
erase()函数;删除某个字符或者一个区间的所有元素;
#include<bits/stdc++.h>using namespace std;int main(){string str="123zabc456";string::iterator it=str.begin();//定义迭代器变量,并且位置指在首元素,迭代器用法跟循环变量i差不多(我也不太明白直接用就行) str.erase(it+3);//删除第4个元素 因为it从0开始所以it+3就是第四个元素 cout<<str<<endl;str.erase(it+3,it+6);//删除[3,6)区间的元素 既删除第3,4,5元素 注意从0开始计数! cout<<str<<endl;return 0;}6.替换字符或者字符串
replace()函数;
#include<bits/stdc++.h>using namespace std;int main(){string str="123456789";str.replace(2,3,"good");//从第2个开始,将连续的三个字符替换为good cout<<str<<endl; return 0;}7.搜索string对象的元素或者子串
find();这个函数有很多重载函数,用法也是多种多样;在这我只说常用的一种;
#include<bits/stdc++.h>using namespace std;int main(){string str="good bad";cout<<str.find('b')<<endl; //找到第一个字符b返回下标值cout<<str.find("bad")<<endl;//找到第一个bad字符串的返回开始位置下标值return 0;}8.string对象的长度和清空和判断是否为空
length()求长度;clear()清空;empty()判断是否为空;
#include<bits/stdc++.h>using namespace std;int main(){string str="123456";cout<<str.length()<<endl;//输出str长度cout<<str.empty()<<endl;//判断是否为空,为空返回1,不为空返回0 str.clear();//清空str cout<<str.empty()<<endl; return 0;}
9.string和STL其他工具嵌套使用
(1)string作为vector的元素
#include<bits/stdc++.h>using namespace std;int main(){string str1="ABC",str2="XYZ";vector<string>v;v.push_back(str1);v.push_back(str2);cout<<v[0]<<endl<<v[1]<<endl;return 0;}(2)string排序
①可以用sort对单个string中的某一段进行排序;
#include<bits/stdc++.h>using namespace std;int main(){string str1="BDACEGF",str2="ABDECXYZ";sort(str1.begin(),str1.end());//对str1整个进行排序 cout<<str1<<endl;sort(str2.begin()+2,str2.begin()+5);//对str2的[2,5)区间进行排序 cout<<str2<<endl;return 0;}
②对字符串数组排序
#include <bits/stdc++.h>using namespace std;int main(){string s[6];s[0] = "ABC";s[1] = "ABD";s[2] = "ABCD";s[3] = "BBC";s[4] = "ABC";s[5] = "aBC";sort(s,s + 6);//对这6个字符串按照字典序进行排序 for(int i = 0; i < 6; i++){cout << s[i] << endl;}return 0; }
10.字符串与数字的转换,stringstream的简单运用
字符串变为数字
#include <bits/stdc++.h>using namespace std;int main(){string s = "123";int a = 0;stringstream ss;ss<<s;ss>>a;cout << a << endl;return 0; }数字变为字符串
#include <bits/stdc++.h>using namespace std;int main(){string s = "123";int b = 666;stringstream ss;ss << b;ss >> s;cout << s << endl;return 0; }
外加一个sscanf用法
#include<bits/stdc++.h> using namespace std;int main(){ char str[100]; //用法一:取指定长度的字符串 sscanf("12345","%4s",str); printf("用法一\nstr = %s\n",str); //用法二:格式化时间 int year,month,day,hour,minute,second; sscanf("2013/02/13 14:55:34","%d/%d/%d %d:%d:%d",&year,&month,&day,&hour,&minute,&second); printf("用法二\ntime = %d-%d-%d %d:%d:%d\n",year,month,day,hour,minute,second); //用法三:读入字符串 sscanf("12345","%s",str); printf("用法三\nstr = %s\n",str); //用法四:%*d 和 %*s 加了星号 (*) 表示跳过此数据不读入. (也就是不把此数据读入参数中) sscanf("12534acc","%*d%s",str); printf("用法四\nstr = %s\n",str); //用法五:取到指定字符为止的字符串。如在下例中,取遇到'+'为止字符串。 sscanf("12345+acc","%[^+]",str); printf("用法五\nstr = %s\n",str); //用法六:取到指定字符集为止的字符串。如在下例中,取遇到小写字母为止的字符串。 sscanf("12345+acc121","%[^a-z]",str); printf("用法六\nstr = %s\n",str); return 0; }
想了解更多大家可以去string用法总结,看一下大神的;
1 0
- STL -string 用法
- STL--string用法(1)
- STL--string用法(2)
- STL--string用法(3)
- stl string用法总结
- stl---<string>的用法
- STL string 用法介绍
- STL---string用法
- STL-string用法
- STL-----string 用法
- STL-string的用法
- STL string 类用法总结
- 【STL string中erase用法】
- 【STL string中erase用法】
- [STL] string的常见用法
- STL中string用法总结
- stl几个(set map vector string)用法
- stl几个(set map vector string)用法
- 热修复Tinker和多渠道打包Walle
- 概率编程简介
- 找出大于给定数数最小的素数
- Java转发与重定向
- 树
- STL-string用法
- scala语言学习笔记
- ArraryList 和 LinkedList 如何选择?
- 第96篇ES与一对一的整合及图像识别跨域问题解决
- Android-20170412
- 网络请求------ContentType(类型) 集合
- 异或^的几个用处
- BZOJ 1251 序列终结者
- Linux下结构体task_struct