STL之string用法详解

article/2025/8/15 6:39:12

2.1 string容器介绍

string也属于STL常用容器之一,因此vector(参考博客)中的大部分方法与迭代器都适用于string容器。string容器用于保存字符串,使用一组连续的内存单元来存放字符串中的每个字符,因此也支持随机访问与存储。c++中string完全可以替代字符数组和字符指针,下面主要介绍string容器独有的方法。

2.2 string容器的创建与使用

2.1.1 包含头文件

#include<string.h>  //c语言中的库文件,提供了各种字符串操作函数
#include<string>    //c++中提供了string

2.1.2 string的构造与访问

/***string的构造方法***/
char ch[30];
char ch1[30] = "laina";
char* ch_ptr = ch1;
string str = "laina";						//默认构造方法
string str1(str);							//初始化为str的副本
string str2("baga");						//初始化为传入字符串的副本
string str3(2, 'b');						//初始化为2个‘b’的副本
string str4(ch_ptr, 3);	    				//初始化为所指数组的前n个字符
string str5(str1, 2);       				//初始化为str1从下标2开始的字符副本
string str6(str1, 2, 3);					//初始化为str1从下标2开始的3个字符
string str7(str.begin() + 1, str.end());  	//使用迭代器初始化

string构造方法

string str = "laina";
string str1 = "hello world!\n";
cout<<"print str1: ";
for(int i = 0;i<str1.length();i++){cout<<str1[i];
}

在这里插入图片描述

3.1.2 string字符串拼接

  • 使用“+=”进行拼接

  • 使用append进行追加:str.append(str2,0,3) //从第0个字符开始截取,截3个字符。

  //第一种拼接方法string str_temp = str + " " + str1;         cout << "str + \" \" + str1 : "<< str_temp << endl;//第二种拼接方法str_temp.append(str1);cout << "str.append(str1): " << str_temp << endl;str_temp.append(str, 3, 2);cout << "str.append(str, 3, 2): " << str_temp << endl;   //从序号为3个字符开始截取,截2个字符。

3.1.3 string字符串拼接

//字符串查找
int pos = str.find("na");      //没有该字符则返回s.npos(int)
cout << "position of na:\t\t" << pos << endl;
//字符串的替换
str1.replace(pos, 4, "naa");       	//从表示从str1[pos]的下一个字符开始,将后面的4个字符替换为“naa”

在这里插入图片描述

3.1.4 string字符串比较

//逐位比较字符串的ascii码,完全相同返回0,假设第i位不同,若str[i]>str1[i]返回1,否则返回-1
cout<<"strcmp(str1.c_str(), str.c_str())= "<<strcmp(str1.c_str(), str.c_str())<<endl;

在这里插入图片描述

3.1.5 string字符串截取

str1 = str1.substr(2,5); 		//从str1[2]开始截取5个字符

在这里插入图片描述

3.1.6 string迭代器的使用

#include<iostream> 
#include <string>
using namespace std; 
int main()
{string ss("zhoujielun");string s(ss.rbegin(), ss.rend());cout << endl;cout << "zhoujielun的逆序: " << s << endl;return 0;
}

在这里插入图片描述

3.1.7 string的一些其他方法

//strnlen(str,n) =>比较str的实际长度与n值,若length<n,则返回实际长度,否则返回n值
cout << "strnlen(str.c_str(), 3): " << strnlen(str.c_str(), 3) << endl;  
//strchr(str,char s) =>返回第一次出现字符s的指针
cout << "strchr(str.c_str(), 'a'): " << strchr(str.c_str(),'a');

在这里插入图片描述


http://chatgpt.dhexx.cn/article/u1Xp6LTs.shtml

相关文章

String用法详解

string类 声明 string类本不是STL的容器&#xff0c;但是它与STL容器有着很多相似的操作&#xff0c;因此&#xff0c;把string放在这里一起进行介绍。 之所以抛弃char*的字符串而选用C标准程序库中的string类&#xff0c;是因为他和前者比较起来&#xff0c;不必担心内存是否…

string 的常见用法详解

目录 1.string 的定义 2.string 中内容的访问 3.string 常用函数实例解析 在C语言中&#xff0c;一般使用字符数组 char str[]来存放字符串&#xff0c;但是使用字符串数组有时会显得操作麻烦&#xff0c;在C中加入了string类型。 注意&#xff0c;如果要使用string&#xf…

【C++】STL常用容器总结之十二:string类

13、string类 声明 string类本不是STL的容器&#xff0c;但是它与STL容器有着很多相似的操作&#xff0c;因此&#xff0c;把string放在这里一起进行介绍。 之所以抛弃char*的字符串而选用C标准程序库中的string类&#xff0c;是因为他和前者比较起来&#xff0c;不必担心内…

string的常用用法详解

一般我们在C语言中用到字符串&#xff0c;都是使用字符数组来存放&#xff0c;但是操作字符数组有时候会不便&#xff0c;所以为了方便操作&#xff0c;在C的STL中加入了字符串类型&#xff08;string&#xff09;。 想要复习以往字符数组的相关知识点请点击以下链接&#xff…

对于String的用法详解

目录 一、String的基本用法 二、对于字符串常量池的理解。 三、String类的常见操作。 四、StringBuffer和StringBuilder的使用。 一、String的基本用法 1.1String的创建方法 //第一种创建方法 String str"Hellow"; System.out.println(str);//第二种创建方法 S…

String类的常见用法

目录 1、创建字符串的四种方式&#xff1a;(方式一和方式四最常用&#xff09; 2、字符串的字面量&#xff08;也是字符串的对象&#xff09; 3、字符串比较 4、关于字符串的常量池问题 5、手工入池—String 类提供的 intern 方法 6、字符串的不可变性&#xff1a; 7、修…

非抢占式多级反馈队列优先级调度算法 C++实现

介绍 前段时间比较忙&#xff0c;没有更新&#xff0c;这次的也是操作系统的一个实践作业 C实现非抢占式多级反馈队列优先级调度算法&#xff0c;希望可以帮到你们。 问题介绍 这里我用课件里的内容 1.应设置多个就绪队列&#xff0c;并为每个队列赋予不同的优先级。第一个队…

多级反馈队列算法补充

http://pages.cs.wisc.edu/~remzi/OSTEP/cpu-sched-mlfq.pdf 本文是多级反馈队列&#xff08;multi-level feedback queue&#xff0c;MLFQ&#xff09;算法的一些小补充&#xff08;两个缺陷与修改方法&#xff09;&#xff0c;参考了上面链接。因为自己用中文没有搜到想要的…

操作系统-多级反馈队列

概述 1962年&#xff0c;Corbato首次提出多级反馈队列&#xff0c;应用于兼容时分共享系统(CTSS)。Corbato因在CTSS中的贡献和后来在Multics中的贡献&#xff0c;获得了ACM颁发的图灵奖(Turing Award)。该调度程序经过多年的一系列优化&#xff0c;出现在许多现代操作系统中。 …

操作系统学习(二):浅析多级反馈队列MLFQ

目录 0、引言 1、多级反馈队列&#xff08;MLFQ&#xff09;的基本规则 2、MLFQ的规则具体说明 3、MLFQ调优及其他问题 4、总结 0、引言 在上篇文章操作系统学习&#xff08;一&#xff09;&#xff1a;浅析操作系统进程调度算法中讲到&#xff0c;在一个通用的操作系统中…

多级反馈队列调度算法(附Python3实现代码)

一、多级反馈队列调度算法 多级反馈队列调度算法是进程调度的一种算法&#xff0c;该调度算法可以不用事先知道各种进程所需的执行时间&#xff0c;还可以较好的满足各种类型进程的需要&#xff0c;是目前共认的一种较好的进程调度算法。 那你可能马上就要问了&#xff0c;多…

调度:多级反馈队列

多级反馈队列&#xff08;Multi-level Feedback Queue, MLFQ&#xff09;是有Corbato在1962年提出的&#xff0c;用于兼容时分共享系统。现在其经过多年的优化&#xff0c;已经被应用于很多现代操作系统中。多级反馈队列是为了解决两方面问题。一&#xff1a;优化周转时间。在之…

多级队列调度和多级反馈队列调度算法的实现

多级队列调度算法 操作系统实验导航 实验一&#xff1a;银行家算法 https://blog.csdn.net/weixin_46291251/article/details/115384510 实验二&#xff1a;多级队列调度和多级反馈队列调度算法 https://blog.csdn.net/weixin_46291251/article/details/115530582 实验三&…

多级反馈队列调度算法模拟实现

实验一 多级反馈队列调度算法 一. 主要实现方法和代码介绍 ​ 1.编写进程类,其只包含所需的运行时间和进程编号两个属性,还有一个运行方法,此方法就是将所需的运行时间属性减去.传入的运行时间. ​ 2.创建进程函数:创建maxp个进程,(应该不超过10,在此创建九个,即暂时不进行进…

计操实验 多级反馈队列C语言

计操实验 多级反馈队列C语言 需求&#xff1a; 1.队列4级&#xff0c;每一级的队列长度均为10&#xff1b;第一级的时间片为T&#xff0c;第二级的时间片为2T&#xff0c;第三级的时间片为4T&#xff0c;第四级的时间片为8T&#xff1b;&#xff08;T的大小自己定&#xff09; …

【操作系统】轮转和多级反馈队列

随着计算机的技术逐渐步入家用后&#xff0c;新的调度指标接踵而来&#xff0c;周转时间已经不能满足人们日常工作的需求&#xff0c;更多时候人们更希望计算机能有更好的交互性&#xff0c;使其能更快地去响应任务&#xff0c;由此针对优化响应时间的调度策略也遍地开花&#…

多级反馈队列调度算法(c++)

如果对你有帮助&#xff0c;可以给卑微的博主留个赞、关注、收藏 (不是) (骗一下数据&#xff0c;说不定以后面试就过了&#xff0c;拜谢) 操作系统基本调度算法&#xff0c;多级反馈队列调度算法。在划分时间片的调度算法中&#xff0c;多级反馈队列算法兼顾提高系统吞吐…

多级反馈队列调度算法

实验目的&#xff1a; 在Linux下编程实现多级反馈队列调度算法&#xff0c;采用三级调度策略&#xff0c;所有进程先按到达顺序进入一级队列&#xff0c;按照时间片为2轮转一次&#xff0c;一个时间片内未完成的进程被依次移入二队列尾部。当一级队列中没有进程时&#xff0c;开…

多级反馈队列调度

多级反馈队列 ​ 多级反馈队列&#xff08;Multi-level Feedback Queue&#xff0c; MLFQ&#xff09;&#xff0c;与上个世纪70年代提出&#xff0c;主要应用于时分共享系统。主要解决两方面问题&#xff1a;一个是优化周转时间&#xff0c;一个是要给用户很好的交互体验。ML…

多级反馈队列算法

步骤&#xff1a; 0时刻&#xff0c;P1到达就绪队列&#xff08;时间片为4的&#xff09;P1先执行2ms&#xff0c;P2到达还未到时间片&#xff0c;P1继续执行2ms后&#xff0c;时间片到达了&#xff0c;P1滑到下一个就绪队列&#xff08;时间片为6的&#xff09;此时&#xff…