C++STL提供了string基本字符系列容器来处理字符串,可以把string理解成字符串类,它提供了添加,删除,替换,查找和比较等丰富的方法。

使用string容器,需要头文件包含声明#include<string>。

创建string对象

创建一个字符串对象s,s是一个空字符串,长度为0.

#include<string>
#include<iostream>
using namespace std;
int main()
{
string s;
cout<<s.length()<<endl;
return 0;
}

给string对象赋值

(1)直接给字符串对象赋值

#include<string>
#include<iostream>
using namespace std;
int main()
{
string s = "Hello C++STL";
cout<<s<<endl;
return 0;
}

(2)把字符指针赋给一个字符串对象

#include<string>
#include<iostream>
using namespace std;
int main()
{
char c[] = "Hello C++STL";
string s = c; //将字符指针赋给一个字符串对象
cout<<s<<endl;
return 0;
}

从string对象尾部添加字符和字符串

(1)采用”+“操作符,可以在string对象的尾部添加字符或者字符串

#include<string>
#include<iostream>
using namespace std;
int main()
{
string s = "Hello ";
s = s+'c'+'+'+'+'+"STL";
cout<<s<<endl;
return 0;
}

(2)还可以使用append方法在string对象的尾部添加字符串(不适用于字符)

#include<string>
#include<iostream>
using namespace std;
int main()
{
string s = "Hello ";
s.append("C++STL");
cout<<s<<endl;
return 0;
}

给string对象插入字符

可以使用insert方法把一个字符插入到迭代器之前(并不适用于字符串)

#include<string>
#include<iostream>
using namespace std;
int main()
{
string s = "abcde";
string::iterator it = s.begin();
s.insert(it+2,'i');
cout<<s<<endl;
return 0;
}

输出结果:abicde

访问string对象的元素

一般使用下标方式随机访问string对象的元素,下标是从0开始计数的,string对象的元素是一个字符(char)

当然也可以使用迭代器进行访问,但是string的迭代器一般不用来访问元素,而是对其中的元素进行删除,插入和替换操作的时候作为参数。

#include<string>
#include<iostream>
using namespace std;
int main()
{
string s = "abcde";
cout<<s[2]<<endl;
return 0;
}

输出字符c

删除string对象的元素

(1)清空一个字符串,则直接赋给它一个空字符串即可。

(2)使用erase()方法删除迭代器所指的那个元素或一个区间中的所有元素

#include<string>
#include<iostream>
using namespace std;
int main()
{
string s = "abcdefgh";
string::iterator it = s.begin();
s.erase(it+3);
cout<<s<<endl;
s.erase(it+2,it+5);
cout<<s<<endl;
s = "";
cout<<"length:"<<s.length()<<endl;
cout<<"empty:"<<s.empty()<<endl;
return 0;
}

输出结果:

abcefgh

abgh

length:0

empty:1

返回string对象的长度

采用length()或者size()方法可以获取string对象的长度(字符的个数),而empty()方法可以用来判断string对象是否为空,为空则返回1,不为空则返回0.

#include<string>
#include<iostream>
using namespace std;
int main()
{
string s = "abcdefgh";
cout<<"length:"<<s.length()<<endl;
cout<<"size:"<<s.size()<<endl;
cout<<"empty:"<<s.empty()<<endl;
s = "";
cout<<"empty:"<<s.empty()<<endl;
return 0;
}

替换string对象的字符

使用replace()方法可以很方便的替换string对象中的字符,常用是使用三个参数,第一个是要替换的字符的开始下标,第二个是要替换的字符的个数,第三个是用于替换的字符串。

#include<string>
#include<iostream>
using namespace std;
int main()
{
string s = "abcdefgh";
s.replace(1,3,"xy");
cout<<s<<endl;
return 0;
}

输出结果:axyefgh

搜索string对象的元素或子串

采用find()方法可查找字符串中的第一个字符元素(char,用单引号界定)或者子串(用双引号界定),如果查到则返回下标值(从0开始计数),如果查不到,则返回string::npos

#include<string>
#include<iostream>
using namespace std;
int main()
{
string s = "ab cdefgh";
if(s.find(' '))cout<<"字符空格在string中出现"<<endl;
if(s.find("def"))cout<<"字符串def在string中出现"<<endl;
if(s.find("qianshou")==string::npos)cout<<"字符串qianshou没有在string中出现"<<endl;
return 0;
}

程序输出结果:

字符空格在string中出现

字符串def在string中出现

字符串qianshou没有在string中出现

string对象的比较

可以直接使用‘>'和‘<'对两个string对象进行比较,结果为TRUE或者FALSE;还可以使用compare方法与其他字符串比较,如果它比对方大则返回1,如果它比对象小则返回-1,如果相等则返回0.

#include<string>
#include<iostream>
using namespace std;
int main()
{
string s1 = "123";
string s2 = "234";
if(s1>"111")cout<<s1<<">"<<"111"<<endl;
if(s1<s2)cout<<s1<<"<"<<s2<<endl; cout<<s1.compare("111")<<endl;
cout<<s1.compare(s2)<<endl;
return 0;
}

输出结果为:

123>111

123<234

1

-1

使用reverse反响排序string对象

使用reverse()方法可以将string对象迭代器所指向的一段区间中的元素(字符)反向排序。reverse()方法需要声明头文件#include<algorithm>

#include<algorithm>
#include<string>
#include<iostream>
using namespace std;
int main()
{
string s = "a9b2c7";
reverse(s.begin(),s.end());
cout<<s<<endl;
return 0;
}

输出结果:

7c2b9a

string基本字符系列容器(一)的更多相关文章

  1. C++之string基本字符系列容器

    string基本字符系列容器 C语言只提供了一个插入类型用来处理字符, 而对于字符串, 只能通过字符串数组来处理, 显得十分不便. C++STL提供了string基本字符系列容器来处理字符串, 可以把 ...

  2. string基本字符系列容器(二)

    string对象作为vector元素 string对象可以作为vector向量元素,这种用法类似字符串数组. #include<string> #include<vector> ...

  3. string基本字符序列容器(竞赛时常用的使用方法总结)

    C语言只提供了一个char类型用来处理字符,而对于字符串,只能通过字符串数组来处理,而C++STL提供了string基本字符序列容器来处理字符串,可以将其理解为字符串类,它提供了添加,删除,替换.查找 ...

  4. JAVA基础5——与String相关的系列(1)

    与String相关的系列 String, 是JAVA中常见的一个引用类型,且其具有一定的特殊性. String类型被设置为final型,即不可继承,也就不可修改其中的实现. String可以改变吗 S ...

  5. Android:认识R类、findViewById方法查找组件、@string查找字符、@color查找颜色、@drawable查找图片、@dimen某个组件尺寸定义、项目引入资源国际化

    导入 之前都是断断续续的看了一些于如何使用android开发的文章.资料等,到目前位置很多基础的东西都不清楚,于是去学习了别人的课程,才了认识了R类.findViewById方法查找组件.项目引入资源 ...

  6. 字符串的比较【string和字符数组】

    无论是string 还是 字符数组的字符串比较函数,返回的都是字典序的大小.如 1234 和 5 比较时就是1234的字典序小于5,要想比较字符串表示的数字的大小,需要自己写函数比较

  7. C++string,char* 字符数组,int类型之间的转换

    string.int 常见类型之间相互转换 int & string 之间的转换 C++中更多的是使用流对象来实现类型转换 针对流对象 sstream实现 int,float 类型都可以实现 ...

  8. Docker深入浅出系列 | 容器初体验

    目录 Docker深入浅出系列 | 容器初体验 教程目标 预备工作 容器与虚拟化技术 什么是Docker 为什么要用Docker 事例 什么是容器镜像和容器 容器与虚拟机的区别 Vagrant与Doc ...

  9. Docker深入浅出系列 | 容器数据持久化

    Docker深入浅出系列 | 容器数据持久化 Docker已经上市很多年,不是什么新鲜事物了,很多企业或者开发同学以前也不多不少有所接触,但是有实操经验的人不多,本系列教程主要偏重实战,尽量讲干货,会 ...

随机推荐

  1. 函数及参数http://www.cnblogs.com/Eva-J/p/7125925.html

    文件的修改操作.删除操作,with语句 函数: 函数的定义:def 函数名(形参1,形参2....): 函数的调用:函数名(实参1,实参2) 函数的返回值: 定义阶段:return 三种情况:没有返回 ...

  2. (一)Nginx正向代理与反向代理

    引言:身为前端开发人员来说对于Nginx的作用或许很少听到,这个东西是后端使用的,Nginx对前端而言意味着什么,有什么用呢?大白会整理出几篇文章给大家细细道来. 1.正向代理的概念 正向代理,也就是 ...

  3. better1【模式】Module模式

    var myModule = (function($, _) { var privateVariable = "Hello World" var pulicProperty = & ...

  4. NoSQL之Redis数据库初探

    一.NoSQL的风生水起 1.1 后Web2.0时代的发展要求 随着互联网Web2.0网站的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经 ...

  5. 剑指offer-第二章数据结构(数组,字符串,链表,树,栈与队列)及例题

    一.数组(最简单的数据结构) 定义:占据一块连续内存并按照顺序存储数据.创建时先指定大小,分配内存. 优点:时间效率高.实现简单的hash(下标为key,对应的数据为value) 缺点:空间效率差.如 ...

  6. 让maven生成可运行jar包

    平时项目大多用到的是war包,今天实现了一个简单功能,无需部署到web服务器上,只需本地跑java代码即可,因此只要生成一个jar包.那么怎么让maven项目打成一个可以使用java命令跑的jar包呢 ...

  7. linux系统无法挂载U盘

    插上U盘 [ 2407.650440] usb 1-3.3: new high speed USB device number 7 using s5p-ehci [ 2407.887332] usb ...

  8. Qt5.4中遇到找不到头文件<QApplication>等。

    从新学习Qt时,重装了Qt5.4,当运行Hello World例子时,遇到了下列的情况 <span style="font-size:18px;">#include & ...

  9. Activity小技巧

    随时随地退出程序 新建一个结合类对所有活动进行管理. public class ActivityCollector{ public static List<Activity> activi ...

  10. XModem协议

    XModem协议介绍: XModem是一种在串口通信中广泛使用的异步文件传输协议,分为XModem和1k-XModem协议两种,前者使用128字节的数据块,后者使用1024字节即1k字节的数据块. 一 ...