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容器的更多相关文章

  1. 浅谈C++ STL string容器

    浅谈C++ STL string容器 本篇随笔简单讲解一下\(C++STL\)中\(string\)容器的使用方法及技巧. string容器的概念 其实\(string\)并不是\(STL\)的一种容 ...

  2. 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. ...

  3. stl string 容器的使用

    string 是基本的字符串序列容器,对应数据结构中的串,和vector<char>也类似,但功能更多 string 容器的使用 1,string 的构造函数是. string() 2,s ...

  4. C++标准模板库(STL)和容器

    1.什么是标准模板库(STL)? (1)C++标准模板库与C++标准库的关系 C++标准模板库其实属于C++标准库的一部分,C++标准模板库主要是定义了标准模板的定义与声明,而这些模板主要都是 类模板 ...

  5. [C++]STL中的容器

    C++11 STL中的容器 一.顺序容器: vector:可变大小数组: deque:双端队列: list:双向链表: forward_list:单向链表: array:固定大小数组: string: ...

  6. STL中的容器

    STL中的容器 一. 种类: 标准STL序列容器:vector.string.deque和list. 标准STL关联容器:set.multiset.map和multimap. 非标准序列容器slist ...

  7. STL之map容器的详解

    一.关于map的介绍 map是STL的 一个容器,和set一样,map也是一种关联式容器.它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键 字的值)的数据 ...

  8. C++ STL 中 map 容器

    C++ STL 中 map 容器 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它 ...

  9. 数据结构《19》----String容器的三种实现

    一.序言 一个简单的string 容器到底是如何实现的? 本文给出了 String 的三种从易到难的实现,涉及了 reference counting, copy on write 的技术. 二.第一 ...

随机推荐

  1. k8s-0-集群

    Docker回顾 docker容器封装应用程序好处 内核在3.8以上,才能完整使用docker隔离功能(所有centos6不推荐用) Docker容器化封装应用程序缺点 容器编排工具有哪些 一: K8 ...

  2. 编写一个c函数,该函数给出一个字节中被置为1的位的个数

    请编写一个c函数,该函数给出一个字节中被置为1的位的个数 #include <stdio.h> void fun(char ch) { int i; int temp; int count ...

  3. HDU 4280 Island Transport(HLPP板子)题解

    题意: 求最大流 思路: \(1e5\)条边,偷了一个超长的\(HLPP\)板子.复杂度\(n^2 \sqrt{m}\).但通常在随机情况下并没有isap快. 板子: template<clas ...

  4. linux下新建用户

    新建用户的两种方式: 一步步创建 useradd -m user1 #-m 是建立家目录 passwd user1 #设置密码 usermod -a -G root user1 #加入管理员 chsh ...

  5. js array & unshift === push head

    js array & unshift === push head const arr = [1, 2, 3]; console.log(arr.unshift(4, 5)); // 5 con ...

  6. 如何使用 iMovie 去除视频里面的声音

    如何使用 iMovie 去除视频里面的声音 视频去除背景音 iMovie https://www.apple.com/imovie/ https://books.apple.com/book/id14 ...

  7. TweenMax & GSAP & SVG Animation

    TweenMax & GSAP & SVG Animation svg animation https://greensock.com/tweenmax GSAP https://ww ...

  8. PWA & bug

    PWA bug https://developer.mozilla.org/zh-CN/docs/Web/Progressive_web_apps https://learning.xgqfrms.x ...

  9. React Styleguidist

    React Styleguidist https://www.thoughtworks.com/cn/radar/techniques/micro-frontends https://github.c ...

  10. 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 ...