C++学习 --string

目录

1, 什么是string

2, 创建string

3, 操作string

3-1, 赋值

3-1-1, 赋值(=)

3-1-1, 赋值(assign)

3-2, 修改

3-2-1, 拼接

3-2-1-1, 拼接(+)

3-2-1-2, 拼接(append)

3-2-2, 替换(replace)

3-2-3, 单字符操作

 3-2-4, 插入(insert)

3-3, 查询

3-3-1, 查找(find)

3-3-2, 查找(rfind)

 3-3-3, 子串(substr)

 3-3-4, 单字符操作

3-3-5, 获取首尾字符

3-4, 比较(compare)

3-5, 删除(erase)

3-6,获取字符串长度


1, 什么是string

C++中的字符串, 本质是一个类

2, 创建string

通过string 对象名, 创建一个string

//普通创建
string str1;
//拷贝构造,str1拷贝给str2
string str2(str1);
//定义5个a组成的字符串
string str3(5, 'a');

3, 操作string

3-1, 赋值

3-1-1, 赋值(=)

通过string 对象名 = 字符串, 进行string对象赋值

//创建str1, 并赋值aaa
string str1 = "aaa";
//创建str2, 并赋值bbb
string str2("bbb");

3-1-1, 赋值(assign)

通过对象名.assign(字符串), 进行string对象赋值

string str2;
str2.assign("bbb");
//字符串有5个字符c组成
string str3;
str3.assign(5,  'c');
//将str3拷贝给str4
string str4;
str4.assign(str3);
//表示获取str1从第3个索引开始直到最后的字符赋值给str2
str2.assign(str1, 3);
//表示获取str1从第3个索引开始的后两个字符赋值给str2
str2.assign(str1, 3, 2);

3-2, 修改

3-2-1, 拼接

3-2-1-1, 拼接(+)

通过对象1+对象2, 拼接两个字符串

string str1 = "hello c++";
//注意拼接之间没有空格, 等价于str1 += str1
str1 = str1 + str1;
3-2-1-2, 拼接(append)

通过对象名1.append(对象名2), 拼接两个字符串

string str1 = "hello c++";
str1.append(str1);
//表示从str1的第3个索引开始直到最后, 拼接到str1后面
str1.append(str1, 3);
//表示从str1的第2个索引开始, 拼接3个字符到str1后面
str1.append(str1, 2, 3);

3-2-2, 替换(replace)

 通过对象名.replace(起始索引, 结束索引, 替换值), 可替换字符串内容

string str1 = "hello c++";
//将第1~3号位索引对应的信息替换为aaa
str1.replace(1, 3, "aaa");

3-2-3, 单字符操作

通过对象名[索引]或者对象名.at(索引), 获取字符串的单个字符

//获取索引为1对应的字符
cout << str1[1] << endl;
cout << str1.at(1) << endl;

 3-2-4, 插入(insert)

通过对象名.insert(索引, 值), 向字符串中插入数据

//在str1的第二个索引位置插入aaa
str1.insert(2, "aaa");

3-3, 查询

3-3-1, 查找(find)

通过对象名.find(), 可查找字符串中的子串, 从开始查找, 返回对应的首次匹配索引

cout << str1.find("aa") << endl;

3-3-2, 查找(rfind)

通过对象名.rfind(), 可查找字符串中的子串, 从开始查找, 返回对应的首次匹配索引

cout << str1.find("l") << endl;

 3-3-3, 子串(substr)

通过对象名.substr(起始索引, 结束索引), 返回起始索引~结束索引的字符

//返回str1的第1~4个字符
cout << str1.substr(1, 4) << endl;

 3-3-4, 单字符操作

通过对象名[索引]或者对象名.at(索引), 修改字符串的单个字符

//修改索引为1对应的字符
str1[1] = 'a';
str1.at(2) = 'a';
cout << str1[1] << endl;
cout << str1.at(1) << endl;

3-3-5, 获取首尾字符

通过对象名.front(), 获取字符串首字符, 通过对象名.back(), 获取字符串尾字符

cout << str1.front() << endl;
cout << str1.back() << endl;

3-4, 比较(compare)

通过对象名1.compare(对象名2), 进行比较字符串大小逐个比较两个字符串的Ascii码, 相等返回0, 对象名1大于对象名2返回1, 对象名1小于对象名2返回-1 

string str1 = "hello c++";
string str2 = "1hello c++";
cout << str1.compare(str2) << endl;

3-5, 删除(erase)

通过对象名.erase(起始索引, 结束索引), 删除字符串中指定的字符

//删除str1的第1~3个字符
str1.erase(1, 3);
cout << str1 << endl;

3-6,获取字符串长度

cout << str1.size() << endl;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

srs的webrtc信令分析

关于webrtc的流信令只有四个 /rtc/v1/publish/&#xff0c;这是推流接口&#xff0c;是推流客户端跟SRS交换SDP的接口 /rtc/v1/play/&#xff0c;这是拉流接口&#xff0c;是拉流客户端跟SRS交换SDP的接口 /rtc/v1/whip/&#xff0c;这也是推流接口&#xff0c;作用是也是交换…

C#开发的OpenRA游戏之属性RenderSprites(8)

C#开发的OpenRA游戏之属性RenderSprites(8) 本文开始学习RenderSprites属性,这个属性是跟渲染有关的,因此它就摄及颜色相关的内容,所以我们先来学习一下调色板,这是旧游戏的图片文件保存的格式,如果放在现代来看,不会再采用这种方法,毕竟现在存储空间变大,便宜了,并…

JDBC 操作 SQL Server 时如何传入列表参数

本文是作为将要对 PostgreSQL 的 in, any() 操作的一个铺垫&#xff0c;也是对先前用 JDBC 操作 SQL Server 的温习。以此记录一下用 JDBC 查询 SQL Server 时如何传递一个列表参数。比如想像一下查询语句 select * from users where id in (?) 我们是否能给这里的问题参数传递…

idea编译问题导致接口调用不通

问题背景&#xff1a; 1.idea版本2021&#xff0c;springboot&#xff0c;父子maven项目&#xff0c;创建了一个新的model。启动之后&#xff0c;调试controller接口&#xff0c;接口一直报404。 问题分析&#xff1a; 1.查看编译后的文件&#xff0c;发现java代码一直没编译…

Vue3使用dataV报错问题解决

DataV官网&#xff1a;https://datav-vue3.jiaminghi.com/guide/ vue2中是没有问题的&#xff0c;这是第一次在vue3中使用发现的报错问题 报错问题 首先安装&#xff1a; pnpm add dataview/datav-vue3 1. 全局注册报错 然后main.ts全局注册 import { createApp } f…

html网站-关于发展历程的案例

一、案例一 1.效果图&#xff1a; 2.代码&#xff1a; 所用到的文件自行在官网下载&#xff0c;也可在git上拉取。 <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><meta…

USB驱动开发基础

USB标准 USB1.0&#xff0c; 1996&#xff0c;低速1.5Mbps和高速12Mbps&#xff0c;USB1.1 iMac G3&#xff0c;Type A和Type B接口USB 2.0 2000&#xff0c; 480Mpbs&#xff0c;Type A/B/C接口、Micro A/BUSB 3.0 5Gbps, 随着USB 3.2命名规定&#xff0c;现在也叫USB 3.2 Ge…

Nginx模块开发之http过滤器filter

文章目录 什么是过滤模块Nginx相关数据结构介绍ngx_module_t的数据结构ngx_http_module_t数据结构ngx_command_s数据结构 相关宏定义filter&#xff08;过滤器&#xff09;实现Nginx模块开发流程Nginx 模块执行具体实现流程create_loc_confmerge_loc_confpostconfiguration修改…

使用OkHttp库爬取百度云视频详细步骤

目录 摘要 一、OkHttp库简介 二、爬虫基本概念 三、使用OkHttp库爬取百度云视频 1、发送HTTP请求 2、处理响应 3、下载文件 四、可能遇到的问题及解决方案 五、注意事项 总结与建议 摘要 本文将详细介绍如何使用OkHttp库爬取百度云视频。文章首先简要介绍OkHttp库和…

【collections】Python中的OrderDict

【collections】Python中的OrderDict 文章目录 【collections】Python中的OrderDict1. 什么是OrderedDict2. Toy Code 1. 什么是OrderedDict 其实很简单OrderedDict是Python中一个字典dict的变体&#xff0c;它可以按照元素添加的顺序来保持键值对&#xff08;key-value pair&…

GPIO模式详解:推挽/开漏/浮空/上拉/下拉/施密特(迟滞)输入

GPIO(General Purpose Input Output)可用于执行数字输入或输出功能。典型的应用包括从/向模拟或数字传感器/设备读写数值、驱动LED、为I2C通信驱动时钟、生成外部组件的触发、发出中断等。 文章目录 1 GPIO简介2 输出模式2.1 推挽输出2.2 开漏输出 3 输入模式3.1 高阻态(浮空)、…

推荐一款适合做智慧旅游的前端模板

目录 前言 一、功能介绍 二、前端技术介绍 三、功能及界面设计介绍 1、数据概览 2、车辆监控 3、地图界面 4、其它功能 四、扩展说明 总结 前言 智慧旅游是一种全新的旅游业务模式&#xff0c;它充分利用先进的信息技术&#xff0c;提升旅游体验&#xff0c;优化旅游管…

【Axure高保真原型】树形表格

今天和大家分享树形表格的原型模板&#xff0c;点击树的箭头可以打开或者收起子节点&#xff0c;点击表格内容&#xff0c;可以选中该行内容实现高亮变色效果&#xff0c;树形表格是通过中继器制作的&#xff0c;使用简单&#xff0c;只需要按要求填写中继器表格即可&#xff0…

2023亚太杯数学建模思路 - 案例:粒子群算法

文章目录 1 什么是粒子群算法&#xff1f;2 举个例子3 还是一个例子算法流程算法实现建模资料 # 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 什么是粒子群算法&#xff1f; 粒子群算法&#xff08;Pa…

安防监控视频融合平台EasyCVR定制化页面开发

安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。安防视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、云存储、回放与检索…

ConditionObject介绍(二)

1. Condition的signal方法分析 分为了几个部分&#xff1a; ● 确保执行signal方法的是持有锁的线程 ● 脱离Condition的队列 ● 将Node状态从-2改为0 ● 将Node添加到AQS队列 ● 为了避免当前Node无法在AQS队列正常唤醒做了一些判断和操作 // 线程挂起后&#xff0c;可以基于…

Centos设置nginx开机自启动设置

Centos设置nginx开机自启动设置 要设置CentOS中的Nginx开机自启动&#xff0c;可以按照以下步骤进行操作&#xff1a; 首先&#xff0c;登录到CentOS服务器上&#xff0c;并以root用户或具有sudo权限的用户身份执行以下命令来安装Nginx&#xff08;如果尚未安装&#xff09;&a…

字符集合!!!

字符集合&#xff01;&#xff01;&#xff01; 描述 输入一个字符串&#xff0c;求出该字符串包含的字符集合&#xff0c;按照字母输入的顺序输出。 数据范围&#xff1a;输入的字符串长度满足 1 \le n \le 100 \1≤n≤100 &#xff0c;且只包含大小写字母&#xff0c;区分大小…

中国信息通信研究院产业与规划研究所校招一面、二面内容

本文介绍2024届秋招中&#xff0c;中国信息通信研究院的数字孪生智慧城市研究员岗位一面、二面的面试基本情况、提问问题等。 10月投递了中国信息通信研究院的数字孪生智慧城市研究员岗位&#xff0c;所在部门为数字孪生与城市数字化研究部。目前完成了一面与二面&#xff0c;在…

Django 模型和Admin站点管理(三)

一、定义模型 &#xff08;1&#xff09; 创建模型类&#xff0c;必须要继承自 models.Model from django.db import models# Create your models here. #设计数据库 #创建模型 class UserModel(models.Model):namemodels.CharField(max_length30) #对应于SQL name varchar(30…