当前位置: 首页 > news >正文

C++——string类介绍

我们知道在C语言里,字符串是以'\0'结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数, 但是这些库函数与字符串是分离开的,而且底层空间需要用户自己管理,可 能还会越界访问。

但是在C++里,却实现了string类,这个string类大大方便了字符串的定义,增添,删除等操作

定义/赋值/增添/合并

int main()
{string s1("hello world");string s2="hello linux";  string s3=s2;string s4;s4=s2;string s5=s1+s2;string ret2 = s1 + "我来了";return 0;
}

迭代器

顺序

假如我们想对字符串进行遍历,那么就需要用迭代器

int main()
{    string s1("hello world");string::iterator it = s1.begin();//begin()函数返回一个迭代器,指向字符串的第一个元素.while (it != s1.end());//end()函数返回一个迭代器,指向字符串的末尾{cout << *it << " ";//打印++it;*it = 'a';//也可以进行修改}cout << endl;return 0;
}

迭代器就类似于一个指针,指向了第一个字母的地址,' * '就是进行解引用

逆序

若是想对字符串进行倒序的读取

string s1("hello world");
auto rit = s1.rbegin();//可以用auto 自动判断类型
while (rit != s1.rend())
{cout << *rit << " ";++rit;
}
cout << endl;

提取字符

//选定字符串,开始的位置,要的字符数
// source_str  pos  num
string s1("hello world");
string s3(s1, 0, 5);string s5("hello linuxaaaaaaaaaaaaaaaaaaa");
string s6(s5, 6);
//npos(最后一个取的数字不填入)-直接取到最后一个 (npos=-1)string s9(++s8.begin(), --s8.end());//也可以用区间
cout << s9 << endl;

读取长度

string s1("hello world");
//大小
cout << s1.size() << endl;
cout << s1.length() << endl;//容量
cout << s1.capacity() << endl;//clear清理数据
s1.clear();//最大容量
cout << s1.max_size() << endl;

ps:容量capacity不会缩小,只会增大

保存空间/预定空间

string s;
s.reserve(100);//保存100个数据的空间,确定知道大概要多少空间,提前开好,减少扩容,提高效率

改变大小

string s("hello world");
cout << s.size() << endl;
cout << s.capacity() << endl;
cout << s << endl;
//s.resize(13);//默认用'\0'进行改变容量
s.resize(13, 'x');//也可以修改为用'x'进行容量的改变

获取指定位置的字符

s.at(0)++;
s[0]++;
//二者一样,但是at访问失败会返回一个抛异常cout << s2 << endl;

尾插

string ss("world");
string s;
s.push_back('#');//#后加上s的内容
s.append("hello");//在其后边加上这个 
cout << s << endl;
s.append(ss);//在s后边加上ss的内容
cout << s << endl;
s += '#';
s += "hello";
s += ss;
cout << s << endl;

粘贴/拷贝

string str;
string base = "dasdasdasdasdasdasdasd";
str.assign(base);//将base的数据拷贝给str,若str已经有数据,那么就会将已有的数据进行覆盖
cout << str << endl;str.assign(base, 5, 10);//resource pos num
cout << str << endl;

查找

string s1("test.cpp");
size_t i = s1.find(".");//找到.的位置,返回下标string s2 = s1.substr(i);//begin..num-num决定了保留的个数,若不输入则默认到结尾
cout << s2 << endl;//如果有多个重复的字符呢?-rfind,返回最后一个出现要找在字符的位置
string s3("test.cpp.tar.zip");
size_t m = s3.rfind('.');
string s4 = s3.substr(m);
cout << s4 << endl;string s5("");

特殊查找

string str("Please, replace the vowels in this sentence by mistakes.");
size_t found = str.find_first_of("aeiou");//找到其中之一的字符即可
//size_t found = str.find("a");
while (found != string::npos)
{str[found] = '*';found = str.find_first_of("aeiou", found + 1);//found = str.find("a", found + 1);
}
cout << str << '\n';

find和find_first_of 区别就是,find是完美匹配要查找的字符串,find_first_of找到其中一个符合的字符即可

除此之外string类里还有很多函数,例如insert erase replace等,可以查,不需要强制记忆,但是上述是比较经常用的,按需记忆。

相关文章:

C++——string类介绍

我们知道在C语言里&#xff0c;字符串是以\0结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列的库函数&#xff0c; 但是这些库函数与字符串是分离开的&#xff0c;而且底层空间需要用户自己管理&#xff0c;可 能还会越界访问。 但是在C…...

教雅川学缠论07-中枢实战众泰汽车000980

本文实战众泰汽车 下面是2023年11月14-2023年8月8众泰汽车日K图 先画日K 接下来处理包含&#xff0c;就变成下面这个样子 下面在套上缠论的理论&#xff0c;未来股价的走势应该是红色椭圆形虚线里面的样子 好了&#xff0c;文章就到这里&#xff0c;如果众泰最终不是这个走势…...

REDIS主从配置

目录 前言 一、概述 二、作用 三、缺点 四、redis主从复制的流程 五、搭建redis主从复制 总结 前言 Redis的主从配置是指在Redis集群中&#xff0c;将一个Redis节点配置为主节点&#xff08;master&#xff09;&#xff0c;其他节点配置为从节点&#xff08;slave&#xff09;…...

【测试】软件测试工具JMeter简单用法

简明扼要&#xff0c;点到为止。 1. JMeter介绍 JMeter的全称是Apache JMeter&#xff0c;是一款用于软件测试的工具软件&#xff0c;其是开源免费的&#xff0c;由Apache基金会运营。 官网&#xff1a;Apache JMeter - Apache JMeter™ 2. 下载安装及运行 2.1 安装 Java8…...

五个授权关键,为智能驾驶量产赋能

站在风口浪尖的智能驾驶行业&#xff1f; 智能汽车是指通过搭载先进传感器等装置&#xff0c;运用人工智能等新技术&#xff0c;具有自动驾驶功能&#xff0c;逐步成为智能移动空间和应用终端的新一代汽车。集中运用了计算机、现代传感、信息融合、通讯、人工智能及自动控制等技…...

【代码随想录-Leetcode第三题:977. 有序数组的平方】

题目 给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序。 示例 1&#xff1a; 输入&#xff1a;nums [-4,-1,0,3,10] 输出&#xff1a;[0,1,9,16,100] 解释&#xff1a;平方后&#xff0c;数组…...

[运维|中间件] Apache APISIX Dashboard部署(持续踩坑更新。。。)

参考文献 Apache APISIX v2.6 官方文档 APISIX、APISIX Dashboard搭建、路由配置及插件使用 安装apisix和apisix-dashboard&#xff0c;访问方式&#xff0c;测试路由转发&#xff0c;反向代理等 文档地址 Dashboard Doc 下载地址 Apache APISIX Dashboard下载地址 部署 …...

Vue中watch监听属性新旧值相同问题解决方案

侦听器 _watch: 作用:可以侦听data和computed中数据的变化. 语法 watch: { "被侦听的属性名" (newVal, oldVal){ } } 监听简单数据类型时可以直接使用,而监听复杂数据类型时,例如当我们只需要监听data或者computed中对象的某个属性时,可以使用字符串的形式进行监听…...

awk案例练习

目录 一、awk练习 1.1筛选ip地址 1.2字段去重 1.3次数统计 1.4统计TCP连接状态 1.5处理字段缺失的数据 1.6筛选给定时间范围内的日志 一、awk练习 1.1筛选ip地址 ifconfig命令查看IP 利用awk进行筛选 ifconfig | awk BEGIN{RS""}NR2{print $6} RS指定输入记…...

Debian 12.1 正式发布

导读Debian 12.1 现已发布&#xff0c;这是对稳定发行版 Debian 12&#xff08;代号 Bookworm &#xff09;的首次更新。本次发布主要增加了安全问题的修正&#xff0c;并对严重问题进行了一些调整。 一些更新内容包括&#xff1a; 妥善处理系统用户的创建&#xff1b;修复 eq…...

neo4j清空数据库

清空所有Person、 Movie节点及其所有关系 MATCH (a:Person), (m:Movie) OPTIONAL MATCH (a)-[r1]-(), (m)-[r2]-() DELETE a,r1,m,r2 查询任意数据 MATCH (n) RETURN n 如果没有&#xff0c; 就说明已经删除成功了 这段代码是用Cypher查询语言编写的&#xff0c;用于清空…...

SpringBoot整合Mybatis-Plus

文章目录 前言一、Mybatis-Plus简介二、框架结构三、SpringBoot整合Mybatis-Plus1.依赖2.配置文件设置 四、前期准备4.1数据库信息4.2dao类4.3pojo类 五、常用注解5.1 TableName(value "")5.2 TableId(value"",type IdType.XXX)5.3 TableField("&qu…...

在langchain中使用自定义example selector

在langchain中使用自定义example selector 简介 在之前的文章中&#xff0c;我们提到了可以在跟大模型交互的时候&#xff0c;给大模型提供一些具体的例子内容&#xff0c;方便大模型从这些内容中获取想要的答案。这种方便的机制在langchain中叫做FewShotPromptTemplate。 如…...

pytest常用执行参数详解

1. 查看pytest所有可用参数 我们可以通过pytest -h来查看所有可用参数。 从图中可以看出&#xff0c;pytest的参数有很多&#xff0c;下面是归纳一些常用的参数&#xff1a; -s&#xff1a;输出调试信息&#xff0c;包括print打印的信息。 -v&#xff1a;显示更详细的信息。 …...

本地项目如何连接git远程仓库

在本地新建项目后&#xff0c;如何连接git远程仓库呢&#xff1f;步骤如下&#xff1a; 第一步&#xff0c; 首先我们在git上新建仓库&#xff0c;设置模板可勾选Readme文件。&#xff08;readme文件的创建是为了介绍所写代码的一些详细信息,为了之后更好的维护。&#xff09;…...

力扣 494. 目标和

题目来源&#xff1a;https://leetcode.cn/problems/target-sum/description/ C题解&#xff08;来源代码随想录&#xff09;&#xff1a;将该问题转为01背包问题。 假设加法的总和为x&#xff0c;那么减法对应的总和就是sum - x。所以我们要求的是 x - (sum - x) target。x …...

Maven-搭建私有仓库

使用NEXUS REPOSITORY MANAGER 3在Windows上搭建私有仓库。 NEXUS REPOSITORY MANAGER 3 是一个仓库管理系统。 下载NEXUS3 官网上是无法下载的,所以网上搜nexus-3.18.1-01-win64就能搜到,下载即可。 安装NEXUS3 下载nexus-3.18.0-01-win64.zip至相应目录下(路径不要有中文)。 …...

PostgreSql 参数配置

一、访问控制参数配置 https://xiaosonggong.blog.csdn.net/article/details/124264877 二、数据库参数配置 2.1 概述 PostgreSQL 的参数配置参数是在 postgresql.conf 文件中集中管理的&#xff0c;类似于 Oracle 的 pfile 文件&#xff0c;除此之外&#xff0c;PostgreSQL…...

【BMC】OpenBMC开发基础2:修改原有程序

修改原有程序 通常情况下我们会需要修改OpenBMC原有的程序来适配我们的项目&#xff0c;本节将介绍一般的流程。 为此首先我们需要了解devtool这个工具&#xff0c;注意它不是前端开发用的那个devtool&#xff0c;而是由OE&#xff08;或者Yocto&#xff1f;&#xff09;提供…...

2012年数学建模竞赛脑卒中发病环境因素分析及干预日期数据处理代码

因四个表格日期数据处理有些复杂&#xff0c;故作此代码一次性处理四组数据&#xff1a; import datetime import pandas as pddef check(string, df, i, num, error_list):if is_valid(pd.to_datetime(string, errorscoerce, format%Y/%m/%d), error_list, i):df.iloc[i, nu…...

Irony Mod Manager:终极Paradox游戏模组冲突解决方案完全指南

Irony Mod Manager&#xff1a;终极Paradox游戏模组冲突解决方案完全指南 【免费下载链接】IronyModManager Mod Manager for Paradox Games. Official Discord: https://discord.gg/t9JmY8KFrV 项目地址: https://gitcode.com/gh_mirrors/ir/IronyModManager 你是否曾经…...

终极AI音乐创作工具:5分钟生成专业级歌曲翻唱

终极AI音乐创作工具&#xff1a;5分钟生成专业级歌曲翻唱 【免费下载链接】AICoverGen A WebUI to create song covers with any RVC v2 trained AI voice from YouTube videos or audio files. 项目地址: https://gitcode.com/gh_mirrors/ai/AICoverGen 你是否曾经梦想…...

从 Dify 配置页理解 RAG 的重要参数

RAG&#xff08;Retrieval-Augmented Generation&#xff0c;检索增强生成&#xff09;经常被一句话概括成“先检索&#xff0c;再回答”。这句话没有错&#xff0c;但如果真的要把一个知识库调到可用&#xff0c;仅仅理解这四个字还不够。真正影响答案质量的&#xff0c;往往是…...

2026企业网盘选型指南:外部协作可控、合规审计、版本追溯的8款测评盘点

企业买云盘&#xff0c;表面是买存储&#xff0c;实际是在买“协作边界”。文件一旦要跨部门、跨项目、跨公司流转&#xff0c;最怕的不是空间不够&#xff0c;而是三件事&#xff1a; 1&#xff09;外发出去收不回来&#xff1b;2&#xff09;谁看过、谁下载过说不清&#xff…...

Claude CLI 缓存陷阱:为什么用第三方模型时 token 会暴涨 10 倍?

一个开发者的真实经历 上周,我收到一位朋友的微信: “我用 Claude Code 接 DeepSeek API,明明代码没怎么变,token 消耗却突然涨了好几倍,一天就把额度用完了。” 这个情况不是个例。在 GitHub 上,至少有 80 多个相关 issue,核心问题都指向同一个点——Claude CLI 默认…...

Windows环境OpenCore引导盘制作:7步搞定Hackintosh安装

Windows环境OpenCore引导盘制作&#xff1a;7步搞定Hackintosh安装 【免费下载链接】OpenCore-Install-Guide Repo for the OpenCore Install Guide 项目地址: https://gitcode.com/gh_mirrors/op/OpenCore-Install-Guide 想在Windows电脑上安装macOS吗&#xff1f;别担…...

Chrome二维码插件:跨设备链接传输的智能解决方案

Chrome二维码插件&#xff1a;跨设备链接传输的智能解决方案 【免费下载链接】chrome-qrcode :zap: A Chrome plugin to Genrate QRCode of URL / Text, or Decode the QRcode in website. 一个Chrome浏览器插件&#xff0c;用于生成当前URL或者选中内容的二维码&#xff0c;同…...

机器学习评价指标之基础指标与综合指标

基础指标评价指标的计算方法在两种方法中有一些差异&#xff0c;但它们都提供了对模型性能的有效度量&#xff0c;用于评估模型在多分类任务中的表现。具体选择哪种方法取决于任务需求、数据特点以及模型训练的策略。对于直接对多个类别进行预测的多分类模型&#xff0c;准确率…...

CSerialPort 4.3.2 保姆级集成指南:5分钟让你的QT/MFC/Electron项目拥有稳定串口功能

CSerialPort 4.3.2 全栈集成实战&#xff1a;从QT到Electron的跨平台串口方案 在工业控制、物联网设备调试和嵌入式系统开发中&#xff0c;串口通信作为最基础也最可靠的数据传输方式之一&#xff0c;至今仍发挥着不可替代的作用。然而&#xff0c;不同操作系统提供的串口API差…...

PTFE材料在多领域的创新应用与发展分析

PTFE材料在生活领域的独特贡献不粘锅技术的演变与PTFE应用不粘锅的问世大大推动了厨房烹饪的便利性&#xff0c;而PTFE材料在其中扮演了关键角色。随着科技的发展&#xff0c;我们见证了PTFE涂层技术的不断创新&#xff0c;早期的传统不粘锅被更为耐磨、不易脱落的新型PTFE涂层…...