string头文件详解
string头文件详解
头文件
#include<string>
using namespace std;
访问字符串
string str="abcd";
for(int i=0;i<str.length();i++){cout<<str[i];
}
输入字符串
string str;
cin>>str;
输出字符串
string str;
cout<<str;
或
printf("%s\n,str.c_str());
string迭代器
string::iterator it;//定义迭代器
string str="abcdefg";
for(it=str.begin()+3;it!=str.end();it++){printf("%c",*it);//输出defg
}
string的运算
加法运算
string str1="abc",str2="def";
str1=str1+str2;
cout<<str1;//输出abcdef
关系运算
按照字典序来比较两个string类型的大小
string str1="ii",str2="iii",str3="ide";
if(str1<str2&&str2>str3){cout<<"OK"<<endl;//输出OK
}
常用函数
1)length()和size()
用于返回字符串长度
时间复杂度为O(1)
2)clear()
用于清空string中所有元素
时间复杂度为O(1)
string str="abcd";
cout<<str.size<<endl;//输出4
str.clear();
cout<<str.length<<endl;//输出0
3)substr()
substr(temp,length)返回从temp位置开始,长度为length的数组
时间复杂度为O(n)
string str="hello world";
cout<<str.substr(0,5)<<endl;//输出hello
cout<<str.substr(6,5)<<endl;//输出world
4)insert()
函数insert有多种写法,时间复杂度都为O(n)
1:insert(temp,str)
表示在temp的位置中插入字符串str
string str1="abcdefg",str2="xyz";
str1.insert(3,str2);//把str2插入str1的x和d之间
cout<<str1<<endl;//输出abcxyzefg
2:insert(it1,it2,it3)
其中it1为原字符的欲插入位置,it2和it3为待插入字符串的首位迭代器(左闭右开区间)
string str1="abcdef",str2="xyz";
str1.insert(str1.begin()+3,str2.begin(),str2.end());//把str2插入str1的c和d之间
cout<<str1<<endl;//输出abcxyzdef
5)erase()
用于删除单个或一个区间内的所有元素,时间复杂度为O(n)
1:删除单个元素
erase(it),it为删除元素的迭代器
string str="abcdefg";
str.erase(str.begin()+4);
cout<<str<<endl;//输出abcdfg
2:删除一个区间的元素
1~ erase(first,last)
first是区间的起始迭代器,last是区间的末尾迭代器的下一个地址,是左闭又开的区间,即 [first,last)
2~ erase(temp,length)
temp是需要删除的字符串的起始位置,length是要删除的字符个数
string str="str"abcdefghijklmn";
str.erase(8,7);
cout<<str<<endl;//输出abcdefgh
str.erase(str.begin()+2,str.end()-1);
cout<<str<<endl;//输出abh
6)find()
str.find(str1),当str1是str的子字符串时,返回其在str中第一次出现的位置,否则返回string::npos .string::npos是一个常数,本身的值为-1,但由于是unsigned int类型,因此也认为是unsigned int类型的最大值
string str="abc",str1="abcdefgabc",str2="defgh";
cout<<str1.find(str)<<endl;
cout<<str1.find(str,4)<<endl;
if(str2.find(str)!=string::npos){cout<<str2.find(str)<<endl;
}
else{cout<<"not"<<endl;
}
最终输出结果为:
0
7
not
7)replace()
str.replace(temp,length,str2)
表示把str从temp位置开始,长度为length的子串替换为str2
也可以写成str.replace(it1,it2,str2),表示把it1~it2范围内(左闭右开区间)的字串替换为str2,时间复杂度是O(str.length)
string str="I will always be with you.";
string str1="bu sure to";
string str2="no matter what."
cout<<str.replace(7,6,str1)<<endl;
cout<<str.replace(str.end()-3,str.end(),str2)<<endl;
输出结果:
I will be sure to be with you.
I will always be with you no matter what.
string头文件详解相关推荐
- c++ string头文件详解
标准c++中string类函数介绍 注意不是CString 之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够.字符串长度等等,而且作 ...
- C++:string 头文件详解和 string 的使用
<string> header 该 header 介绍字符串类型,字符特征和一组转换函数 类模板 (class template ) basic_string 通用字符串类模板 char ...
- strcpy没有声明 c++头文件详解
strcpy没有声明 c++头文件详解 2010-10-23 12:19 4971人阅读 评论(0) 收藏 举报 c++stringiostreamcmath.h语言 协议分发程序程序在公司机器上编译 ...
- linux语言的说明顺序有哪些,(linux常用头文件详解.doc
(linux常用头文件详解 linux常用头文件详解 POSIX标准定义的头文件??????? 目录项 ???????? 文件控制 ??? 文件名匹配类型 ??? 路径名模式匹配类型 ??????? ...
- linux 常用头文件,(常用头文件详解.doc
(常用头文件详解 linux常用头文件详解 POSIX标准定义的头文件??????? 目录项 ???????? 文件控制 ??? 文件名匹配类型 ??? 路径名模式匹配类型 ??????? 组文件 ? ...
- ARM(IMX6U)裸机之I.MX6ULL启动头文件详解(内部BOOT ROM、IVT + Boot data + DCD + led.bin)
参考:Linux之ARM(IMX6U)裸机之I.MX6ULL镜像烧写以及启动头文件的详解 作者:一只青木呀 发布时间: 2020-08-09 17:10:00 网址:https://blog.csdn ...
- C++std命名空间和头文件详解
一个中大型软件往往由多名程序员共同开发,会使用大量的变量和函数,不可避免地会出现变量或函数的命名冲突.当所有人的代码都测试通过,没有问题时,将它们结合到一起就有可能会出现命名冲突. 例如小李和小韩都参 ...
- ios多线程之NSThread头文件详解
1.NSThread 头文件中的相关方法 //获取当前线程+(NSThread *)currentThread; //创建线程后自动启动线程 + (void)detachNewThreadSelect ...
- c语言windows.h头文件详解
如果c语言库里没有某个头文件 只需要将下好的头文件放入下面的路径即可 windows.h头文件包含的函数及其用法 1.GetAsyncKeyState()()//通过函数来判断按键按下的状态 主要用法 ...
最新文章
- C# 线程安全与 lock锁
- DCMTK:存储服务类提供者(C-STORE操作)
- 电脑主板主要外部接口
- 爬取前尘无忧python职位信息并保存到mongo数据库
- Spring中的异步和事务性事件侦听器
- crtsiii型无砟轨道板_自主知识产权CRTSⅢ型轨道板助力,赣深铁路无砟轨道轨道板灌注第一工作面完成...
- 好程序员分享使用JavaScript正则表达式如何去掉双引号
- python cnn程序_python cnn训练(针对Fashion MNIST数据集)
- Eclipse 中 代码颜色的设置(注释的颜色, 局部变量的颜色, 类变量的颜色。。。 )
- 两台计算机通过路由器连接网络,如何设置将两台计算机连接到Internet的路由器...
- fedora 主题美化
- mac上iphone4刷机与越狱(一)
- 2021 OpenCV人工智能竞赛优秀项目团队介绍集锦(五)
- 正确打开adams软件_Adams2017 64位证书安装图文教程
- 实例分割新作——Instances as Queries
- VisionPro脚本详解
- Vulkan_Shader_Day06—光照(多光源_Multiple lights)
- 安全组设置IP段 -- 示列
- betapubgmobile服务器维护,pubg mobile beta测试版
- Keras【极简】ACGAN
热门文章
- Mobox企业网盘文档权限管理的技术实现
- socke5 使用curl 测试_命令行测试WebSocket
- 数据结构与算法_求两个向量的夹角
- android逆向知乎,Android ProGuard警告 - 找不到引用的类“com.zhihu.matisse.R $ plurals”...
- windows10实现nfs文件共享
- Google面试题—有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD【转载】
- Mysql连接池详解——原理部分
- matlab条件语句怎么写,matlab if 条件语句 用法以及实例是什么
- 虚拟机创建共享文件夹
- 微信小程序云开发详解