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头文件详解相关推荐

  1. c++ string头文件详解

    标准c++中string类函数介绍 注意不是CString 之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够.字符串长度等等,而且作 ...

  2. C++:string 头文件详解和 string 的使用

    <string> header 该 header 介绍字符串类型,字符特征和一组转换函数 类模板  (class template ) basic_string 通用字符串类模板 char ...

  3. strcpy没有声明 c++头文件详解

    strcpy没有声明 c++头文件详解 2010-10-23 12:19 4971人阅读 评论(0) 收藏 举报 c++stringiostreamcmath.h语言 协议分发程序程序在公司机器上编译 ...

  4. linux语言的说明顺序有哪些,(linux常用头文件详解.doc

    (linux常用头文件详解 linux常用头文件详解 POSIX标准定义的头文件??????? 目录项 ???????? 文件控制 ??? 文件名匹配类型 ??? 路径名模式匹配类型 ??????? ...

  5. linux 常用头文件,(常用头文件详解.doc

    (常用头文件详解 linux常用头文件详解 POSIX标准定义的头文件??????? 目录项 ???????? 文件控制 ??? 文件名匹配类型 ??? 路径名模式匹配类型 ??????? 组文件 ? ...

  6. 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 ...

  7. C++std命名空间和头文件详解

    一个中大型软件往往由多名程序员共同开发,会使用大量的变量和函数,不可避免地会出现变量或函数的命名冲突.当所有人的代码都测试通过,没有问题时,将它们结合到一起就有可能会出现命名冲突. 例如小李和小韩都参 ...

  8. ios多线程之NSThread头文件详解

    1.NSThread 头文件中的相关方法 //获取当前线程+(NSThread *)currentThread; //创建线程后自动启动线程 + (void)detachNewThreadSelect ...

  9. c语言windows.h头文件详解

    如果c语言库里没有某个头文件 只需要将下好的头文件放入下面的路径即可 windows.h头文件包含的函数及其用法 1.GetAsyncKeyState()()//通过函数来判断按键按下的状态 主要用法 ...

最新文章

  1. C# 线程安全与 lock锁
  2. DCMTK:存储服务类提供者(C-STORE操作)
  3. 电脑主板主要外部接口
  4. 爬取前尘无忧python职位信息并保存到mongo数据库
  5. Spring中的异步和事务性事件侦听器
  6. crtsiii型无砟轨道板_自主知识产权CRTSⅢ型轨道板助力,赣深铁路无砟轨道轨道板灌注第一工作面完成...
  7. 好程序员分享使用JavaScript正则表达式如何去掉双引号
  8. python cnn程序_python cnn训练(针对Fashion MNIST数据集)
  9. Eclipse 中 代码颜色的设置(注释的颜色, 局部变量的颜色, 类变量的颜色。。。 )
  10. 两台计算机通过路由器连接网络,如何设置将两台计算机连接到Internet的路由器...
  11. fedora 主题美化
  12. mac上iphone4刷机与越狱(一)
  13. 2021 OpenCV人工智能竞赛优秀项目团队介绍集锦(五)
  14. 正确打开adams软件_Adams2017 64位证书安装图文教程
  15. 实例分割新作——Instances as Queries
  16. VisionPro脚本详解
  17. Vulkan_Shader_Day06—光照(多光源_Multiple lights)
  18. 安全组设置IP段 -- 示列
  19. betapubgmobile服务器维护,pubg mobile beta测试版
  20. Keras【极简】ACGAN

热门文章

  1. Mobox企业网盘文档权限管理的技术实现
  2. socke5 使用curl 测试_命令行测试WebSocket
  3. 数据结构与算法_求两个向量的夹角
  4. android逆向知乎,Android ProGuard警告 - 找不到引用的类“com.zhihu.matisse.R $ plurals”...
  5. windows10实现nfs文件共享
  6. Google面试题—有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD【转载】
  7. Mysql连接池详解——原理部分
  8. matlab条件语句怎么写,matlab if 条件语句 用法以及实例是什么
  9. 虚拟机创建共享文件夹
  10. 微信小程序云开发详解