目录

1.string 的定义

2.string 中内容的访问

3.string 常用函数实例解析


在C语言中,一般使用字符数组 char str[]来存放字符串,但是使用字符串数组有时会显得操作麻烦,在C++中加入了string类型。

注意,如果要使用string,需要添加 string头文件,即# include<string>  (注意 string. h 和 string 是不一样的头文件)。除此之外,还需要在头文件下面加上一句:“ using namespace std"。

即:

#include<string>

using namespace std;

1.string 的定义

定义和初始化和普通的数据类型一样:

string str;//定义变量
string str="abcd";//初始化

2.string 中内容的访问

(1)通过下标访问

一般来说,可以直接像字符数组那样去访问string。

程序代码:

#include<bits/stdc++.h>//万能头文件,里面包含头文件<string>
#include<string>
using namespace std;
int main(){string str = "hello";for(int i=0;i<str.length();i++){printf("%c ",str[i]);}return 0;
}

运行结果:

 如果要读入和输出整个字符串,则只能用cin和cout.

程序代码:

//#include<bits/stdc++.h>
//万能头文件,里面包含头文件<string> 和 <iostream>
#include<iostream>//cin和cout在iostream头文件中,而不是stdio.h
#include<string>
using namespace std;
int main(){string str;cin>>str;cout<<str<<endl;return 0;
}

运行结果:

(2)通过迭代器访问

一般仅通过(1)就可以满足访问的要求,但是有些函数比如insert()和erase()则要求以迭代器为参数,所以还是学一下迭代器的用法。

  定义string迭代器

string::iterator it;

这样就可以得到迭代器it,并且可以通过*it来访问string里的每一位:

程序代码:

#include<cstdio>
#include<string>
using namespace std;
int main(){string str = "abcd"; for(string::iterator it = str.begin();it !=str.end();it++) {printf("%c",*it); }return 0;
}

运行结果:

3.string 常用函数实例解析

(1)operator+=

这是string 的加法,可以将两个string直接拼接起来。

示例如下:

#include<iostream>
#include<string>
using namespace std;
int main(){string str1= "abcd",str2="xyz",str3;str3=str1+str2;//将str1和str2拼接,赋值给str3str1+=str2;//将str2直接拼接到str1上cout<<str1<<endl;cout<<str3<<endl;return 0;
}

输出结果:

(2) length()/size()

length()返回string的长度,即存放的字符数,时间复杂度为O(1)。size()与length()基本相同。

示例如下:

string str="abcxyz";

printf("%d %d\n"),str.length,str.size());

输出结果:

6 6

(3) insert()

insert(pos,string),在pos号位置插入字符串string。

示例如下:

#include<iostream>
#include<string>
using namespace std;
int main(){string str = "nihaoshijie"; str.insert(2, "**");cout<<str<<endl;return 0;
}

输出结果:

(4) erase()

  • 删除单个元素

str.erase(it)用于删除单个元素,it为需要删除元素的迭代器。

示例如下:

#include<iostream>
#include<string>
using namespace std;
int main(){string str = "abcdefg";str.erase(str.begin()+4);//删除4号位(即e)cout<<str<<endl; return 0;
}

输出结果:

  • 删除一个区间内的所有元素有元素

str.erase(pos,length),其中pos为需要开始删除的起始位置, length为删除的字符个数。

示例如下:

#include<iostream>
#include<string>
using namespace std;
int main(){string str = "abcdefg";str.erase(3,2);//删除从3号位开始的2个字符,即de cout<<str<<endl; return 0;
}

输出结果:

(5) clear()

clear()用以清空string中的数据,时间复杂度一般为O(1)。

代码示例:

#include<iostream>
#include<string>
using namespace std;
int main(){string str = "youdianlei"; str.clear();   //清空字符串 cout<<str.length()<<endl;return 0;
}

输出结果:

(6) string::npos

string:npos是一个常数,其本身的值为-1,但由于是 unsigned_int类型,因此实际上也可以认为是unsigned_int类型的最大值。string:npos用以作为find函数失配时的返回值。

(7) find()

str.find(str2),当str2是str的子串时,返回其在str中第一次出现的位置;如果str2不是str的子串,那么返回 string::npos。

str.find(str2,pos),从str的pos号位开始匹配str2,返回值与上相同。时间复杂度为O(nm),其中n和m分别为str和str2的长度。

示例如下:

输出结果:

声明:本文内容摘自胡凡、曾磊老师主编的《算法笔记》书本内容。

string 的常见用法详解相关推荐

  1. string的常见用法详解

    目录 string的定义 string中内容的访问 string常用函数实例解析 在C语言中,一般使用字符数组char str[]来存放字符串,但是使用字符数组有时会显得操作麻烦,而且容易因经验不足而 ...

  2. 《算法笔记》学习日记——6.1 vector的常见用法详解

    目录 6.1 vector的常见用法详解 问题 A: Course List for Student (25) 问题 B: Student List for Course (25) 小结 6.1 ve ...

  3. Linux中head和tail命令作用,Linux 命令head和tail常见用法详解

    head和tail是一组想对应的命令,默认分别显示文件的开头和末尾10行记录. head head 命令可以将一段文本的开头一部分输出到标准输出. head命令既可以处理文本文件也可以处理标准输入. ...

  4. linux lvm2,LVM2常见用法详解

    LVM2常见用法详解 1.简介 LVM(Logical Volume Manager)是逻辑卷管理的意思,是linux环境下对磁盘分区进行管理的一种机制,lvm是建立在硬盘和分区之上的一个逻辑层,来提 ...

  5. string类的用法详解

    //string函数用法详解!附代码,写具体的用法! #include <iostream> #include <string> #include <sstream> ...

  6. C++/C--unordered_map常见用法详解

    文章目录 1. std::unordered_map 的定义与特性 2. 构造 std::unordered_map 3. 赋值操作 4. 迭代器操作 4.1 指向整个容器中的元素 4.2 指向某个桶 ...

  7. C++/C--set常见用法详解【转载】

    1 概念 set是一个内部自动有序且不含重复元素的容器,其实现自动去重按升序排序.使用set,需要添加头文件:#include <set>.可以通过迭代器*it来访问set里面的元素,但是 ...

  8. C++中的unordered_map常见用法详解

    文章目录 1. std::unordered_map 的定义与特性 2. 构造 std::unordered_map 3. 赋值操作 4. 迭代器操作 4.1 指向整个容器中的元素 4.2 指向某个桶 ...

  9. python propresql mysql_python数据库操作mysql:pymysql、sqlalchemy常见用法详解

    本文实例讲述了python数据库操作mysql:pymysql.sqlalchemy常见用法.分享给大家供大家参考,具体如下: 相关内容: 使用pymysql直接操作mysql 创建表 查看表 修改表 ...

最新文章

  1. BIP_BI Pubisher的SQL/XSL/FO扩展函数应用(概念)
  2. python之父去面试-面试题_个人文章 - SegmentFault 思否
  3. linux redis 删除_Redis-安装amp;删除【Linux 版】
  4. 【Word】如何把代码优美的插入word
  5. android 底部表格布局TableLayout
  6. 先序中序建立二叉树的递归算法
  7. 特斯拉皮卡,会大卖吗?
  8. windows 通过 bat 脚本后台启动 jar 包,通过 jps 找到 pid,然后停止指定 jar 包,附 linux shell 脚本启停脚本
  9. 微信 红包 服务器架构,微信红包数据库架构演变.pdf
  10. 多媒体计算机相关知识,多媒体基础知识题库
  11. nssa和stub_eNSP环境,分析NSSA区域与Stub区域的区别
  12. 《月亮与红蜘蛛》王巧琳
  13. 计算机网络拨号,个人拨号上网宽带连接设置图文方法
  14. 芝诺数解|「十三」一菜一格,百菜百味——重庆川菜数据分析报告
  15. 一款可以排查重复照片,清理多余照片的照片管理软件,使用PowerPhotos的图像浏览器快速查看照片
  16. 【笔记】编程的原则:改善代码质量的101个方法
  17. 传输层 和网络层的区别
  18. 卡尔曼滤波公式推导(2)
  19. buuctf刷题 3(1个sstl模板注入 1个session伪造 以及php)
  20. 多小区智慧物业管理系统源码

热门文章

  1. 大数据实时处理框架之Flink win10快速部署
  2. linux查看磁盘wwn号,如何查看WWN号
  3. git ssh传输的原理与实践
  4. 详解SQL聚合函数、分组查询
  5. 人体轮廓特征—运动历史图—python实现
  6. “码绘”第二集————编程创意作品
  7. 算术编码(Arithmetic coding)
  8. 微信小程序中处理PDF文件
  9. 运动跑步耳机哪个牌子好、最受欢迎的跑步耳机
  10. 微信小程序 组件左右对齐