C++标准模板库(STL)之String
1、String的常用用法
在C语言中,使用字符数组char str[]来存字符串,字符数组操作比较麻烦,而且容易有'\0'的问题,C++在STL中加入string类型,对字符串常用的需求功能进行封装。
使用string,必须要加头文件#include<string>和using namespace std;
注意:#include<string>和#include<string.h>的区别,#inlcude<string.h>是包含了字符串常用的函数,比如strcat,strcmp。#include<string.h>和#include<cstring>等价。
1.1、string的定义
定义string的方式和基本类型定义相同。
string str;
string str="abcd";
1.2、string中的内容访问
和vector一样,有两种方式:下标访问,迭代器访问
1.2.1、下标访问
可以如同字符数组一样去访问string
1.2.2、迭代器访问
string的迭代器不需要参数,直接定义string::iterator it;
#include<stdio.h>
#include<string> using namespace std; int main()
{
string str="abcd";
for(int i=;i<str.length;i++)
{
printf("%c ",str[i]);//a b c d
} //通过迭代器访问string内容
for(string::iterator it=str.begin();it!=str.end();it++)
{
pritnf("%c ",*it);
} return ;
1.3、string常用函数
1.3.1、+,+=,字符串拼接
1.3.2、==,!=,<,<=,>=,>比较大小
1.3.3、length()/size(),字符串长度
1.3.4、insert()
1.3.5、erase()
1.3.6、clear()
1.3.7、substr()
1.3.8、replace()
#include<stdio.h>
#include<string> using namespace std; int main()
{
string str="abcd";
for(int i=;i<str.length;i++)
{
printf("%c ",str[i]);//a b c d
} //通过迭代器访问string内容
for(string::iterator it=str.begin();it!=str.end();it++)
{
pritnf("%c ",*it);
}
string str1="xyz";
string str2=str+str1;
cout<<str2<<endl;//abcdxyz
if(str<str1)printf("OK\n");//字符串比较,首先比较长度,长度相同的进行字典序比较。
printf("%d %d\n",str.lenght(),str.size());//4,4//获取字符串的长度,大小
cout<<str.insert(,str1)<<endl;//往str[3]处插入xyz,输出abcxyzd;
str.insert(str.begin()+,str.begin(),str.end);
str.substr(,);//substr(pos,len),从0开始,长度为3的子串
return ;
}
1.3.9、string::npos
string::npos是一个常数,本身值为-1,用来做find函数失配的返回值。
1.3.10、find()
#include<stdio.h>
#include<string> using namespace std; int main()
{
string str="abcd";
string str1="bc";
if(str.find(str1)!=string::npos)
{
cout<<str.find(str1)<<endl;
}
if(str.find(str2,)!=string::npos)
{
cout<<str.find(str2,)<<endl;
}
else
{
cout<<"No Find"<<endl;
}
return ;
}
2018-09-25 16:15:15
@author:Foreordination
C++标准模板库(STL)之String的更多相关文章
- 标准模板库(STL)学习探究之stack
标准模板库(STL)学习探究之stack queue priority_queue list map/multimap dequeue string
- C++的标准模板库STL中实现的数据结构之链表std::list的分析与使用
摘要 本文主要借助对C++的标准模板库STL中实现的数据结构的学习和使用来加深对数据结构的理解,即联系数据结构的理论分析和详细的应用实现(STL),本文是系列总结的第二篇.主要针对线性表中的链表 ST ...
- 标准模板库(STL)学习探究之vector容器
标准模板库(STL)学习探究之vector容器 C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被 ...
- C++ 标准模板库(STL)
C++ 标准模板库(STL)C++ STL (Standard Template Library标准模板库) 是通用类模板和算法的集合,它提供给程序员一些标准的数据结构的实现如 queues(队列), ...
- STL学习系列之一——标准模板库STL介绍
库是一系列程序组件的集合,他们可以在不同的程序中重复使用.C++语言按照传统的习惯,提供了由各种各样的函数组成的库,用于完成诸如输入/输出.数学计算等功能. 1. STL介绍 标准模板库STL是当今每 ...
- 标准模板库--STL
标准模板库STL 1.泛型程序设计 C++ 语言的核心优势之一就是便于软件的重用 C++中有两个方面体现重用: 1.面向对象的思想:继承和多态,标准类库 2.泛型程序设计(generic progra ...
- C++的标准模板库STL中实现的数据结构之顺序表vector的分析与使用
摘要 本文主要借助对C++的标准模板库STL中实现的数据结构的学习和使用来加深对数据结构的理解.即联系数据结构的理论分析和详细的应用实现(STL),本文是系列总结的第一篇,主要针对线性表中的顺序表(动 ...
- 实验8 标准模板库STL
一.实验目的与要求: 了解标准模板库STL中的容器.迭代器.函数对象和算法等基本概念. 掌握STL,并能应用STL解决实际问题. 二.实验过程: 完成实验8标准模板库STL中练习题,见:http:// ...
- C++ 标准模板库STL 队列 queue 使用方法与应用介绍
C++ 标准模板库STL 队列 queue 使用方法与应用介绍 queue queue模板类的定义在<queue>头文件中. 与stack模板类很相似,queue模板类也需要两个模板参数, ...
- 【c++】标准模板库STL入门简介与常见用法
一.STL简介 1.什么是STL STL(Standard Template Library)标准模板库,主要由容器.迭代器.算法.函数对象.内存分配器和适配器六大部分组成.STL已是标准C++的一部 ...
随机推荐
- 如何查看视图的sql语句
select text from syscomments s1 join sysobjects s2 on s1.id=s2.id where name='视图名称'前提条件是视图没有被加密,有权限
- dlo,学习清单
肥文自动机 模拟纵火 替罪羊 法法塔 ntt
- tensorflow学习笔记1:导出和加载模型
用一个非常简单的例子学习导出和加载模型: 导出 写一个y=a*x+b的运算,然后保存graph: import tensorflow as tf from tensorflow.python.fram ...
- 《视觉SLAM十四讲课后作业》第二讲
1.设线性⽅程 Ax = b,在 A 为⽅阵的前提下,请回答以下问题:1. 在什么条件下,x 有解且唯⼀? 非齐次线性方程在A的秩与[A|B]的秩相同时方程有解,当R(A)=R(A,B)=n时方程有唯 ...
- 我的web前端整理和学习
知识点收藏:(边看.边记录.边写) 开直播学习:虎牙 待办事理>> 练习自我表达(把文章做成视频).技术学习总结(博客与公众号).跳出舒适圈. 前端知识体系:https://www.cnb ...
- 【模板】ST表
给定一个长度为 \(N\) 的数列,和 \(M\) 次询问,求出每一次询问的区间\([l,r]\)内数字的最大值. 说明 对于30%的数据,满足: \(1 \leq N, M \leq 10 , 1≤ ...
- 13: ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台
参考博客:https://www.cnblogs.com/zclzhao/p/5749736.html 51cto课程:https://edu.51cto.com/center/course/less ...
- ORA-00338
dg环境从库报错:ORA-00338: log 5 of thread 1 is more recent than control fileORA-00312: online log 5 thread ...
- Oracle 12c 单实例安装
准备工作 实验环境:Redhat 6.6 Oracle 12c 12.2.0.1 1.官网下载 https://www.oracle.com/technetwork/database/enterp ...
- Tomcat类加载
一.为什么会有类加载 1.在类加载阶段,虚拟机需要完成以下3件事情 1)通过一个全限类定名来获取此类的二进制字节流 2) 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构 3)在内存中生成 ...