STL之string容器
string
string封装了char*,管理这个字符串,是一个char*型的容器。
string的相关操作
头文件
#include<string>
string构造函数
string str;//创建一个空的字符串
string str1(str);//使用一个string对象初始化另一个string对象
string str2("hello");//使用字符串s初始化
string str3(3,'a');//使用n个字符c初始化
string基本赋值操作
string str1="hello";//char*类型字符串 赋值给当前的字符串 str1="hello"
string str2=str1;//把字符串s赋给当前的字符串 str2="hello"
string str3='a';//字符赋值给当前的字符串 str3="a"
str4.assign("hello");//把字符串s赋给当前的字符串 str4="hello"
str5.assign("hello",3);//把字符串s的前n个字符赋给当前的字符串 str5="hel"
str6.assign(str2);//把字符串s赋给当前字符串 str6="hello"
str7.assign(5,'a')//用n个字符c赋给当前字符串 str7="aaaaa"
str8.assign(str4,0,3)//将s从start开始n个字符赋值给字符串 str8="hel"
str9.assign("hello",0,3)//将s从start开始n个字符赋值给字符串 str9="hel"
string存取字符操作
str[i];//通过[]方式取字符 访问越界直接挂掉
str.at(i);//通过at方法获取字符 访问越界抛出异常
为了修改string字符串的内容,下标操作符[]和at都会返回字符的引用。但当字符串的内存被重新分配之后,可能发生错误.
string拼接操作
str+=str1;//重载+=操作符
str+="hello";//重载+=操作符
str+='a';//重载+=操作符
str.append("hello");//把字符串s连接到当前字符串结尾
str.append("hello",3);//把字符串s的前n个字符连接到当前字符串结尾
str.append(str,3);//这种写法错误[Error] no matching function for call to 'std::basic_string<char>::append(std::string&, int)'
str.append(str1);//同operator+=()
str.append(str1,0,3);//把字符串s中从pos开始的n个字符连接到当前字符串结尾
str.append("world",0,3);//把字符串s中从pos开始的n个字符连接到当前字符串结尾
str.append(3,'a');//在当前字符串结尾添加n个字符c
string查找和替换
str.find(str1,0); //查找str第一次出现位置,从pos开始查找,返回int下标
str.find("hello",2); //查找s第一次出现位置,从pos开始查找
int find(const char* s, int pos, int n) const; //从pos位置查找s的前n个字符第一次位置
str.find('a',0); //从pos位置查找字符c第一次出现位置
str.rfind(str1,0);//查找str最后一次位置,从pos开始查找
str.rfind("hello",2);//查找s最后一次出现位置,从pos开始查找
str.rfind("hello",0,3);//从pos查找s的前n个字符最后一次位置
str.rfind('a',0) const; //查找字符c最后一次出现位置
str.replace(0,3,str1); //替换从pos开始n个字符为字符串str
str.replace(0,3,"hello"); //替换从pos开始的n个字符为字符串s
string比较操作
/*
compare函数在>时返回 1,<时返回 -1,==时返回 0。
比较区分大小写,比较时参考字典顺序,排越前面的越小。
大写的A比小写的a小。
*/
str.compare(s);//与字符串s比较
str.compare("hello");//与字符串s比较
string子串
string str=str1.substr(0,3);//返回由pos开始的n个字符组成的字符串
string插入和删除操作
str.insert(2,"hello"); //插入字符串
str.insert(2,str1); //插入字符串
str.insert(1,3,'a');//在指定位置插入n个字符c
str.erase(1,3);//删除从Pos开始的n个字符
string和c-style字符串转换
//string 转 char*
string str = "itcast";
const char* cstr = str.c_str();
//char* 转 string
char* s = "itcast";
string str(s);
小练习
写一个函数,函数内部将string字符串中的所有小写字母都变为大写字母。
#include<iostream>
#include<string>
using namespace std;
int main(){
string str="hello";
for(int i=0;i<str.size();i++){
str[i]=toupper(str[i]); //tolower
}
cout<<str<<endl;
return 0;
}
输出:HELLO
STL之string容器的更多相关文章
- 浅谈C++ STL string容器
浅谈C++ STL string容器 本篇随笔简单讲解一下\(C++STL\)中\(string\)容器的使用方法及技巧. string容器的概念 其实\(string\)并不是\(STL\)的一种容 ...
- 2.2 C++STL string容器详解
文章目录 引言 2.2.1 string的特性 2.2.2 string用法理论 2.2.2.1 string构造函数 2.2.2.2 string赋值操作 2.2.2.3 string取值操作 2. ...
- stl string 容器的使用
string 是基本的字符串序列容器,对应数据结构中的串,和vector<char>也类似,但功能更多 string 容器的使用 1,string 的构造函数是. string() 2,s ...
- C++标准模板库(STL)和容器
1.什么是标准模板库(STL)? (1)C++标准模板库与C++标准库的关系 C++标准模板库其实属于C++标准库的一部分,C++标准模板库主要是定义了标准模板的定义与声明,而这些模板主要都是 类模板 ...
- [C++]STL中的容器
C++11 STL中的容器 一.顺序容器: vector:可变大小数组: deque:双端队列: list:双向链表: forward_list:单向链表: array:固定大小数组: string: ...
- STL中的容器
STL中的容器 一. 种类: 标准STL序列容器:vector.string.deque和list. 标准STL关联容器:set.multiset.map和multimap. 非标准序列容器slist ...
- STL之map容器的详解
一.关于map的介绍 map是STL的 一个容器,和set一样,map也是一种关联式容器.它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键 字的值)的数据 ...
- C++ STL 中 map 容器
C++ STL 中 map 容器 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它 ...
- 数据结构《19》----String容器的三种实现
一.序言 一个简单的string 容器到底是如何实现的? 本文给出了 String 的三种从易到难的实现,涉及了 reference counting, copy on write 的技术. 二.第一 ...
随机推荐
- 如何安装Gephi工具
gephi中文版是一款开源免费跨平台基于JVM的复杂网络分析软件,安装后需要安装Java jdk API,否则就会出现gephi打不开的情况 该工具主要用于各种网络和复杂系统,动态和分层图的交互可视化 ...
- k8s二进制部署 - harbor安装
harbor安装 # 目录说明: # /opt/src : 源码.文件下载目录 # /opt/release : 各个版本软件存放位置 # /opt/apps : 各个软件当前版本的软链接 [root ...
- np.random.randint()的返回值
返回的是数组而非int 比如返回x,y 为[1][2] 而非1,2 容易在只有一维一列时没有意识到 其他函数的返回值也要注意
- 【php代码审计】熊海cms1.0
0x01 环境安装 1. 熊海cms1.0 (http://js.down.chinaz.com/201503/xhcms_v1.0.rar) 2.seay代码审计工具 3. phpstudy (ph ...
- 技术分享: CSS3 系列
技术分享: CSS3 系列 css 一键换肤 css 打印样式,媒体查询 css 禁用选择 css 性能优化 css 计算单位 css 3D 特效 refs xgqfrms 2012-2020 www ...
- involution 内卷化
involution 内卷化 虽然不熟悉 involution,但是我想起另外两个常用词:evolution(进化)和 revolution(革命). 它们共同的词根volute,拉丁语原意是&quo ...
- React Native for Windows + macOS
React Native for Windows + macOS React Native 0.63 https://aka.ms/ReactNative https://microsoft.gith ...
- Python Quiz & Python Exercise
Python Quiz & Python Exercise https://www.w3schools.com/quiztest/quiztest.asp?qtest=PYTHON https ...
- MBP & battery
MBP & battery 实际:3 + 1 个小时左右 4 个小时左右 shit apple 10 小时 Chrome bug https://appleinsider.com/articl ...
- JUnit5学习之二:Assumptions类
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...