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 的技术. 二.第一 ... 
随机推荐
- k8s-0-集群
			Docker回顾 docker容器封装应用程序好处 内核在3.8以上,才能完整使用docker隔离功能(所有centos6不推荐用) Docker容器化封装应用程序缺点 容器编排工具有哪些 一: K8 ... 
- 编写一个c函数,该函数给出一个字节中被置为1的位的个数
			请编写一个c函数,该函数给出一个字节中被置为1的位的个数 #include <stdio.h> void fun(char ch) { int i; int temp; int count ... 
- HDU 4280 Island Transport(HLPP板子)题解
			题意: 求最大流 思路: \(1e5\)条边,偷了一个超长的\(HLPP\)板子.复杂度\(n^2 \sqrt{m}\).但通常在随机情况下并没有isap快. 板子: template<clas ... 
- linux下新建用户
			新建用户的两种方式: 一步步创建 useradd -m user1 #-m 是建立家目录 passwd user1 #设置密码 usermod -a -G root user1 #加入管理员 chsh ... 
- js array & unshift === push head
			js array & unshift === push head const arr = [1, 2, 3]; console.log(arr.unshift(4, 5)); // 5 con ... 
- 如何使用 iMovie 去除视频里面的声音
			如何使用 iMovie 去除视频里面的声音 视频去除背景音 iMovie https://www.apple.com/imovie/ https://books.apple.com/book/id14 ... 
- TweenMax & GSAP & SVG Animation
			TweenMax & GSAP & SVG Animation svg animation https://greensock.com/tweenmax GSAP https://ww ... 
- PWA & bug
			PWA bug https://developer.mozilla.org/zh-CN/docs/Web/Progressive_web_apps https://learning.xgqfrms.x ... 
- React Styleguidist
			React Styleguidist https://www.thoughtworks.com/cn/radar/techniques/micro-frontends https://github.c ... 
- ip & 0.0.0.0 & 127.0.0.1 & localhost
			ip & 0.0.0.0 & 127.0.0.1 7 localhost host https://www.howtogeek.com/225487/what-is-the-diffe ... 
