string容器-构造函数

 基本概念

  1. string本质上是一个类
  2. string类内部封装了很多成员方法,例如:查找find、拷贝copy,删除delete,替换replace,插入insert
  3. string管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责

string和char*的区别:

  1. char*是指针
  2. string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器。

string构造函数

函数原型:

  • string();        //创建一个空的字符串,例如string str;   
    • string(const char* s);        //使用字符指针s初始化
  • string(const string& str);     //使用一个string对象初始化另一个string对象
  • string(int n, char c);           //使用n个字符c初始化
#include <iostream>
#include <string>
using namespace std;

void test01(){
	string s1();		//创建一个空的字符串
	
	const char* st1 = "hello world";
	string s2(st1);		//使用字符串st1初始化s2
	
	const string& st2 = "world";
	string s3(st2);		//使用一个string对象初始化另一个string对象
	
	int n = 2;
	char c = 'x';
	string s4(n, c);
	
	cout << "s1 = " << s1 <<endl;
	cout << "s2 = " << s2 <<endl;
	cout << "s3 = " << s3 <<endl;
	cout << "s4 = " << s4 <<endl;
}
int main() {
	test01();
	return 0;
}
1 = 1
s2 = hello world
s3 = world
s4 = xx

string赋值操作

函数原型:

方式一: = 

#include <iostream>
#include <string>
using namespace std;

void test01(){
	string str1;
	str1 = "hello world";
	cout << "str1 = " << str1 << endl;
	
	string str2;
	str2 = str1;
	cout << "str2 = " << str2 << endl;
	
	string str3;
	str3 = 'a';
	cout << "str3 = " << str3 << endl;
}
int main() {
	test01();
	return 0;
}
str1 = hello world
str2 = hello world
str3 = a

方式二: assign

#include <iostream>
#include <string>
using namespace std;

void test01(){
	string str4;
	str4.assign("hello C++");
	cout << "str4 = " << str4 << endl;

	string str5;
	str5.assign(str4);
	cout << "str5 = " << str5 << endl;
	
	string str6;
	str6.assign("hello C++", 5);
	cout << "str6 = " << str6 << endl;
	
	string str7;
	str7.assign(8, 'x');
	cout << "str7 = " << str7 << endl;
}
int main() {
	test01();
	return 0;
}
str4 = hello C++
str5 = hello C++
str6 = hello
str7 = xxxxxxxx

拼接

函数原型

方式一: +=(可追加字符、char*、string类型)

#include <iostream>
#include <string>
using namespace std;

void test01(){
	string str1 = "I love ";
	str1 += "game ";
	cout << "str1 = " << str1 << endl;
	
	str1 += 'a';
	cout << "str1 = " << str1 << endl;
	
	string str2 = "nd eating!";
	str1 += str2;
	cout << "str1 = " << str1 << endl;
}
int main() {
	test01();
	return 0;
}
str1 = I love game 
str1 = I love game a
str1 = I love game and eating!

方式二: append

#include <iostream>
#include <string>
using namespace std;

void test01(){
	string str1 = "I love ";
	str1.append("game");
	cout << "str1 = " << str1 << endl;
	
	str1.append(":DNF abcde", 4);
	cout << "str1 = " << str1 << endl;
	
	string str2 = " and WZRY!";
	str1.append(str2);
	cout << "str1 = " << str1 << endl;
	
	string str3 = "aaa nice! abcdef";
	str1.append(str3, 3, 6);
	cout << "str1 = " << str1 << endl;
}
int main() {
	test01();
	return 0;
}
str1 = I love game
str1 = I love game:DNF
str1 = I love game:DNF and WZRY!
str1 = I love game:DNF and WZRY! nice!

查找和替换 

查找

find和rfind的区别

  • find从左往右找
  • rfind从右往左找
#include <iostream>
#include <string>
using namespace std;

void finde(int pos){
	if(pos == -1){
		cout << "未找到该元素" << endl;
	}else{
		cout << "该元素的位置是:" << pos << endl;
	}
}
void test01(){
	string str1 = "abcdefgcd";
	int pos1 = str1.find("cd");
	finde(pos1);
	
	string str2 = "abcfg";
	int pos2 = str2.find("cd");
	finde(pos2);

	pos1 = str1.rfind("cd");
	finde(pos1);
	
	pos2 = str2.rfind("cd");
	finde(pos2);
}

int main() {
	test01();
	return 0;
}
该元素的位置是:2
未找到该元素
该元素的位置是:7
未找到该元素

替换

#include <iostream>
#include <string>
using namespace std;

void test01(){
	string str1 = "abcdefgcd";
	str1.replace(3,2,"112");
	cout << str1 <<endl;
}

int main() {
	test01();
	return 0;
}
abc112fgcd

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/624471.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CentOS7中如何docker-compose

在 CentOS 7 上安装 docker-compose 需要几个步骤 步骤 1: 安装 Docker 首先&#xff0c;确保你已经安装了 Docker。如果没有安装&#xff0c;可以通过以下命令安装&#xff1a; sudo yum update -y sudo yum install -y yum-utils sudo yum-config-manager --add-repo http…

利用MMDetection进行模型微调和权重初始化

目录 模型微调修改第一处&#xff1a;更少的训练回合Epoch修改第二处&#xff1a;更小的学习率Learning Rate修改第三处&#xff1a;使用预训练模型 权重初始化init_cfg 的使用配置初始化器 本文基于 MMDetection官方文档&#xff0c;对模型微调和权重初始化进行第三方讲解。 …

漏桶算法:稳定处理大量突发流量的秘密武器!

漏桶算法的介绍 我们经常会遇到这样一种情况&#xff1a;数据包的发送速率不稳定&#xff0c;而网络的带宽有限。如果在短时间内有大量的数据包涌入&#xff0c;那么网络就会出现拥塞&#xff0c;数据包的丢失率就会增大。为了解决这个问题&#xff0c;人们提出了一种叫做“漏…

RockChip Android8.1 EthernetService分析

一:概述 本篇文章将围绕RK Android8.1 SDK对Ethernet做一次框架分析,包含Framework层和APP层。 当前版本SDK默认只支持一路Ethernet,熟悉Ethernet工作流程后通过修改最终会在系统Setting以太网中呈现多路选项(可以有多种实现方式),博主通过增加ListPreference实现的效果…

鸿蒙内核源码分析(特殊进程篇)

三个进程 鸿蒙有三个特殊的进程&#xff0c;创建顺序如下: 2号进程&#xff0c;KProcess&#xff0c;为内核态根进程.启动过程中创建.0号进程&#xff0c;KIdle为内核态第二个进程&#xff0c;它是通过KProcess fork 而来的.这有点难理解.1号进程&#xff0c;init&#xff0c…

Linux-远程登录

远程登录Linux服务器的两款小工具&#xff1a; 1、Xshell &#xff08;可以远程登录到Linux终端控制台&#xff09; 2、 Xftp (可以与Linux服务器互相传递文件) 家庭/学校免费 - NetSarang Website 下载地址 1、傻瓜式安装Xshell6 2、在Linux主机上查看 Linux主机的…

天府锋巢直播基地运营方——树莓集团:构建3+3+1运营体系

天府锋巢直播产业基地作为一座充满活力和创新精神的成都数字产业园区&#xff0c;自其诞生之初便承载着引领直播产业发展的使命。作为该基地的运营方&#xff0c;树莓集团以其前瞻性的视野和深厚的行业积淀&#xff0c;成功构建了331运营体系&#xff0c;为入驻企业提供全生命周…

MHD093C-058-PG1-AA具备哪些特点?

MHD093C-058-PG1-AA是一种高性能的伺服电机控制器。 该产品具备以下特点&#xff1a; 高精度与高性能&#xff1a;MHD093C-058-PG1-AA设计用于提供精确的运动控制和定位&#xff0c;适用于需要高精度定位和控制的场合。快速响应&#xff1a;采用先进的控制技术&#xff0c;确…

八字排盘软件-​无敌八字排盘软件

功能介绍 1.完全免费使用&#xff0c;即使用不需要付费且无任何限制。 2.同时推出手机版电脑版&#xff0c;两版本数据互通互用&#xff0c;即电脑版的数据可以备份到手机版上导入&#xff0c;手机版的数据也可以备份到电脑版上恢复导入&#xff0c;方便手机和电脑共用的朋友。…

Vue3实战笔记(20)—封装头部导航组件

文章目录 前言一、封装头部导航栏二、使用步骤总结 前言 Vue 3 封装头部导航栏有助于提高代码复用性、统一风格、降低维护成本、提高可配置性和模块化程度&#xff0c;同时还可以实现动态渲染等功能&#xff0c;有利于项目开发和维护。 一、封装头部导航栏 封装头部导航栏&am…

Project Zomboid 僵尸毁灭工程服务器开服教程

1、购买后登录服务器 2、设置游戏端口 2.1、由于僵尸毁灭工程的设置需要两个端口&#xff0c;它们用于游戏端口&#xff0c;Stram端口&#xff08;可选&#xff09; 服务器创建时默认会获得一个首选端口&#xff0c;既为我们的游戏端口&#xff08;游戏端口必须是首选端口&am…

2024年 C++音视频开发学习路线(ffmpeg/rtsp/srs/webrtc/hls)

在音视频工作领域&#xff0c;很多人可能会陷入徘徊和迷茫的境地。音视频的知识纷繁复杂&#xff0c;自己学习非常困难&#xff0c;既需要非常扎实的基础知识&#xff0c;又需要有很多的工程经验&#xff1b;不知道如何学&#xff0c;怎样才能查漏补缺自己的技术短板。 对于音…

【Docker系列】Linux部署Docker Compose

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【火热征稿~~】2024年心理、哲学与历史国际会议(ICPPH 2024)

2024年心理、哲学与历史国际会议&#xff08;ICPPH 2024&#xff09; 2024 International Conference on Psychology, Philosophy, and History 【会议简介】 2024年心理、哲学与历史国际会议将于历史文化名城武汉召开。此次盛会集结了来自世界各地的心理学家、哲学家和历史学…

acw165. 小猫爬山-DFS剪枝与优化

题目 思路 暴搜顺序&#xff1a;从前往后依次枚举每只小猫&#xff0c;枚举当前这只小猫应该放在哪一辆车上&#xff0c;递归完n层之后&#xff0c;就可以知道所有方案中的最少车辆总数剪枝的情况&#xff1a; 优化搜索顺序&#xff1a;大部分情况下&#xff0c;应该优先搜索分…

安全 | 开源入侵防御系统 Snort

目录 Snort 概要 入侵预防系统模式 数据包记录器和嗅探器模式 网络安全学习路线 &#xff08;2024最新整理&#xff09; 学习资料的推荐 1.视频教程 2.SRC技术文档&PDF书籍 3.大厂面试题 特别声明&#xff1a; Snort 概要 Snort 概要 是世界上最重要的开源入…

GPT-4o omni全能 openAI新flagship旗舰模型,可以通过音频、视觉、文本推理。自然人机交互,听懂背景噪音、笑声、歌声或表达情感,也能输出。

新旗舰模型GPT-4o GPT-4o 是openAI新flagship旗舰模型&#xff0c;可以通过音频、视觉、文本推理reason&#xff0c;也能组合输出text, audio, and image。 接受文本、音频和图像的任意组合作为输入&#xff0c;并生成文本、音频和图像输出的任意组合。 速度快 2 倍&#xff…

【随笔】Git 高级篇 -- 缓存远端数据命令的参数 git fetch(三十八)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

数据可视化(十一):Pandas餐饮信息表分析——交叉表、离群点分析,多维分析等高级操作

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…

学习古琴律学的好东西,帮您从基因里学古琴

《从基因里学懂古琴》是一本关于古琴律学的著作&#xff0c;作者通过基因的角度来解读古琴音乐的奥秘和美妙。古琴作为我国传统文化的瑰宝之一&#xff0c;具有悠久的历史和独特的音乐风格&#xff0c;但其律学原理一直以来都是一个谜。本书从基因的角度探讨了古琴音乐的律学特…