STL的string容器
string基本概念
string是C++风格的字符串,本质上是一个类。
string 和 char* 的区别
char* 是一个指针;
string是一个类,内部封装了 char* ,用来管理字符串,是一个 char* 型的容器。
特点
string内部封装了很多成员函数
例如:查找find、拷贝copy、删除delete、替换replace、插入insert
string管理 char* 分配的内存,不用担心复制越界和取值越界等,由类内部负责。
string的构造函数
#include <iostream>
#include <Windows.h>
#include <string>
#include <vector>
#include <algorithm> // 使用STL提供的遍历算法,遍历vector容器using namespace std;void test()
{// 默认构造string s1 = "Hello World";cout << "s1 = " << s1 << endl;// 第二种构造函数const char* str = "Hello World";string s2(str);cout << "s2 = " << s2 << endl;// 第三种构造函数string s3(s2);cout << "s3 = " << s3 << endl;// 第四种构造函数string s4(10, 'A');cout << "s4 = " << s4 << endl;
}int main(void)
{test();system("pause");return 0;
}
运行截图:

string赋值操作
#include <iostream>
#include <Windows.h>
#include <string>using namespace std;void test()
{// 第一种赋值方式string s1 = "Hello World";cout << "s1 = " << s1 << endl;// 第二种赋值方式string s2;s2 = s1;cout << "s2 = " << s2 << endl;// 第三种赋值方式string s3;s3 = 'A';cout << "s3 = " << s3 << endl;// 第四种赋值方式string s4;s4.assign("Hello C++");cout << "s4 = " << s4 << endl;//第五种赋值方式string s5;s5.assign("Hello C++", 5);cout << "s5 = " << s5 <<endl;// 第六种赋值方式string s6;s6.assign(s5);cout << "s6 = " << s6 <<endl;// 第七种赋值方式string s7;s7.assign(10, 'W');cout << "s7 = " << s7 << endl;}int main(void)
{test();system("pause");return 0;
}
运行截图:

string字符串拼接
#include <iostream>
#include <Windows.h>
#include <string>using namespace std;void test()
{// 第一种字符串拼接方式string str1 = "Hello";str1 += " C++";cout << str1 << endl;// 第二种字符串拼接方式str1 += '!';cout << str1 << endl;// 第三种字符串拼接方式string str3 = " Good morning";str1 += str3;cout << str1 << endl;// 第四种字符串拼接方式string str4 = "I";str4.append(" Love ");cout << str4 << endl;// 第五种字符串拼接方式string str5 = str4;str5.append("C++ and Java", 3);cout << str5 << endl;// 第六种字符串拼接方式string str6 = "你好:";str6.append(str1);cout << str6 << endl;// 第七种字符串拼接方式string str7;str7.append(str1, 0, 9);cout << str7 << endl;}int main(void)
{test();system("pause");return 0;
}
运行截图:
string字符串查找和替换
#include <iostream>
#include <Windows.h>
#include <string>using namespace std;// 字符串查找
void test()
{string s1 = "Hello World";int pos = s1.find("Hello");if (pos == -1){cout << "未找到字符串" << endl;}else{cout << "pos = " << pos << endl; // pos = 0}
}// 字符串替换
void test02()
{string str = "Hello World";str.replace(6, 5, "C++");cout << str << endl;
}int main(void)
{test();test02();system("pause");return 0;
}
运行截图:
string字符串比较
#include <iostream>
#include <Windows.h>
#include <string>using namespace std;void test()
{string s1 = "Hello World";string s2 = "Hello";if (s1.compare(s2) == 0){cout << "字符串相等" << endl;}else{cout << "字符串不等" << endl;}
}int main(void)
{test();system("pause");return 0;
}
运行截图:
string字符串存取
#include <iostream>
#include <Windows.h>
#include <string>using namespace std;void test()
{string s = "Hello World";// 1、通过[]访问单个字符for (int i = 0; i < s.size(); i++){cout << s[i] << " ";}cout << endl;// 2、通过at访问单个字符for (int i = 0; i < s.size(); i++){cout << s.at(i) << " ";}cout << endl;}int main(void)
{test();system("pause");return 0;
}
运行截图:
string子串获取
#include <iostream>
#include <Windows.h>
#include <string>using namespace std;void test()
{string s1 = "Hello World";string s2 = s1.substr(6, 5);cout << s2 << endl; // 输出World
}int main(void)
{test();system("pause");return 0;
}
运行截图:

相关文章:
STL的string容器
string基本概念 string是C风格的字符串,本质上是一个类。 string 和 char* 的区别 char* 是一个指针; string是一个类,内部封装了 char* ,用来管理字符串,是一个 char* 型的容器。 特点 string内部封装了很多成员…...
半导体工艺技术
完整内容点击:【半导体工艺技术】...
acwing算法提高之图论--单源最短路的扩展应用
目录 1 介绍2 训练 1 介绍 本专题用来记录使用。。。。 2 训练 题目1:1137选择最佳线路 C代码如下, #include <iostream> #include <cstring> #include <algorithm> #include <queue>using namespace std;const int N 101…...
SQLServer数据库使用Function实现根据字段内容的拼音首字母进行数据查询
实现SQL首字母查询分两步,第一步建Function,第二步引用新建的Function。 1. 首先需要自定义一个查询的Function,详细SQL如下: ALTER function [dbo].[GetDataByPY](str nvarchar(4000)) returns nvarchar(4000) as begin decla…...
Linux——信号概念与信号产生方式
目录 一、概念 二、前台进程与后台进程 1.ctrlc 2.ctrlz 三、信号的产生方式 1.键盘输入产生信号 2.系统调用发送信号 2.1 kill()函数 2.2 raise()函数 2.3 abort()函数 3.异常导致信号产生 3.1 除0异常 3.2 段错误异常 4.软件条件产生信号 4.1 管道 4.2 闹钟…...
赋值语句还能当判断条件?涨芝士了!
赋值和条件看似是C语言中毫不相关的两个概念,虽然实际过程中我猜测不会有太多这种不太符合常理的情况出现,但是现在在学习的过程中,为了出题而出题总是会整出一些花活出来.....这很难不让人联想起高中时一些大佬为了彰显自己的数学天赋而自己…...
数据结构 - 算法效率|时间复杂度|空间复杂度
目录 1.算法效率 2.时间复杂度 2.1定义 2.2大O渐近表示法 2.3常见时间复杂度计算举例 3.空间复杂度 3.1定义 3.2常见空间复杂度计算举例 1.算法效率 算法的效率常用算法复杂度来衡量,算法复杂度描述了算法在输入数据规模变化时,其运行时间和空间…...
接口自动化之 + Jenkins + Allure报告生成 + 企微消息通知推送
接口自动化之 Jenkins Allure报告生成 企微消息通知推送 在jenkins上部署好项目,构建成功后,希望可以把生成的报告,以及结果统计发送至企微。 效果图: 实现如下。 1、生成allure报告 a. 首先在Jenkins插件管理中&#x…...
『Apisix安全篇』探索Apache APISIX身份认证插件:从基础到实战
🚀『Apisix系列文章』探索新一代微服务体系下的API管理新范式与最佳实践 【点击此跳转】 📣读完这篇文章里你能收获到 🛠️ 了解APISIX身份认证的重要性和基本概念,以及如何在微服务架构中实施API安全。🔑 学习如何使…...
【01-20】计算机网络基础知识(非常详细)从零基础入门到精通,看完这一篇就够了
【01-20】计算机网络基础知识(非常详细)从零基础入门到精通,看完这一篇就够了 以下是本文参考的资料 欢迎大家查收原版 本版本仅作个人笔记使用1、OSI 的七层模型分别是?各自的功能是什么?2、说一下一次完整的HTTP请求…...
『大模型笔记』常见的分布式并行策略(分布式训练)
常见的分布式并行策略(分布式训练) 文章目录 一. 为什么分布式训练越来越流行二. 常见的并行策略2.1 数据并行2.2 模型并行2.3 流水并行2.4 混合并行二. 参考文献一. 为什么分布式训练越来越流行 近年来,深度学习被广泛应用到各个领域,包括计算机视觉、语言理解、语音识别、广…...
java 企业工程管理系统软件源码+Spring Cloud + Spring Boot +二次开发+ 可定制化
工程项目管理软件是现代项目管理中不可或缺的工具,它能够帮助项目团队更高效地组织和协调工作。本文将介绍一款功能强大的工程项目管理软件,该软件采用先进的Vue、Uniapp、Layui等技术框架,涵盖了项目策划决策、规划设计、施工建设到竣工交付…...
3D数据格式导出工具HOOPS Publish如何生成高质量3D PDF?
在当今数字化时代,从建筑设计到制造业,从医学领域到电子游戏开发,3D技术已经成为了不可或缺的一部分。在这个进程中,将3D模型导出为3D PDF格式具有重要的意义。同时,HOOPS Publish作为一个领先的解决方案,为…...
【springboot】闲话 springboot 的几种异步机制 及 长轮询的概念和简单实现
文章目录 引子springboot的几种异步形式开启异步支持和线程池配置(重要)第一种:Async第二种:Callable<T>第三种:WebAsyncTask<T>第四种:DeferredResult<T> 长轮询的简单实现概念实现服务…...
Mysql---安全值守常用语句
文章目录 目录 文章目录 一.用户权限设置 用户设置 元数据查询 Union联合查询 分组查询 字符串函数 总结 一.用户权限设置 用户设置 #用户创建 create user "用户名""%主机名" identified by "密码" #用户删除 drop user 用户名 #用户查询…...
containerd快速安装指南
1 containerd快速安装指南🚀 本指南旨在提供一个简洁有效的方法来安装containerd。我们将通过一份易于理解的脚本步骤,指导您完成安装🔧。请根据您的实际需求,适当调整containerd版本及其相关依赖。 注意事项: 本安装…...
Javascript - 正则表达式相关的一些基础的范例
很久以前的一些学习资料,归档发布; 正则表达式的基础,以HTML代码来示范: <html><head><title></title><script language"javascript">function test(){//从页面要求客户输入一个字符串…...
JUC:线程活跃性(死锁、活锁、饥饿)
文章目录 线程活跃性死锁活锁解饿 线程活跃性 死锁 两个线程相互等待对方已拥有的锁,就会相互一直等待,不会停止。 t1拥有a锁,等待b锁。 t2拥有b锁,等待a锁。 Slf4j(topic "c.Test3") public class st3 {public st…...
RGB到灰度图像的转换原理及例程
RGB到灰度图像的转换是一种常用的图像处理操作,其原理是根据人眼对不同颜色的敏感度,将彩色图像的红、绿、蓝三个通道的像素值按照一定权重进行加权平均,得到灰度图像的像素值。 在RGB图像中,每个像素点由红、绿、蓝三个分量组成…...
PCA+DBO+DBSCN聚类,蜣螂优化算法DBO优化DBSCN聚类,适合学习,也适合发paper!
PCADBODBSCN聚类,蜣螂优化算法DBO优化DBSCN聚类,适合学习,也适合发paper! 一、蜣螂优化算法 摘要:受蜣螂滚球、跳舞、觅食、偷窃和繁殖等行为的启发,提出了一种新的基于种群的优化算法(Dung Beetle Optim…...
保姆级教程:在银河麒麟V10桌面版上,用Docker容器化部署SpringBoot + 达梦数据库应用
银河麒麟V10桌面版容器化实战:SpringBoot与达梦数据库的Docker化部署指南 在国产化技术栈日益成熟的今天,将传统应用迁移到容器化环境已成为提升部署效率和系统可移植性的关键路径。银河麒麟V10作为国产操作系统的代表,结合飞腾CPU的硬件生态…...
MPC模型下四节电池SOC均衡控制技术:全网首发的效果超群解决方案
MPC模型预测控制四节电池SOC均衡 [1]全网首发电池SOC均衡控制,当前领域国内期刊罕有有人发。 [2]效果超群,根据电池均衡路径完美规划均衡电流,电流由大到小,避免均衡后期均衡路径问题。电池均衡这玩意儿听着高大上,说白…...
Sigma-Delta ADC中的Sinc3滤波器:资源优化与面积权衡实战分析
Sigma-Delta ADC中的Sinc3滤波器:资源优化与面积权衡实战分析 在物联网芯片设计中,面积和功耗往往是工程师们最关心的两个指标。当我们需要为一个22位精度的Sigma-Delta ADC集成Sinc3滤波器时,如何在保证性能的前提下最大限度地优化硬件资源&…...
Llama-3.2V-11B-cot部署案例:中小企业低成本构建AI图文分析工作台
Llama-3.2V-11B-cot部署案例:中小企业低成本构建AI图文分析工作台 1. 项目概述 Llama-3.2V-11B-cot是基于Meta最新多模态大模型开发的专业级视觉推理工具,专为中小企业打造的低成本AI图文分析解决方案。该工具针对双卡RTX 4090环境进行了深度优化&…...
FTDI FT2232H USB转JTAG实战指南:MPSSE配置与多设备调试
1. FT2232H与JTAG基础入门 第一次接触FT2232H这块芯片时,我完全被它的多功能性震惊了。这块小小的USB转接芯片不仅能处理UART通信,还能通过MPSSE引擎模拟JTAG、SPI、I2C等多种协议。对于嵌入式开发者来说,这简直就是调试神器。 FT2232H最吸引…...
League Akari:5大核心解决方案提升英雄联盟游戏体验
League Akari:5大核心解决方案提升英雄联盟游戏体验 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari是一…...
链表合并不解之处
我在做一元多次的方程合并时,在节点函数中定义系数和指数,相当于给你两个La,Lb链表,按照节点中的指数大小排序,对他们系数进行合并。我有两种方式进行编写。题目:第一行包含一个整数 nn,表示第一…...
OpenClaw+GLM-4.7-Flash学习助手:自动整理课程笔记与生成复习题
OpenClawGLM-4.7-Flash学习助手:自动整理课程笔记与生成复习题 1. 为什么需要自动化学习助手? 去年备考研究生时,我每天要处理3-4小时的课程视频。最痛苦的不是听课本身,而是课后整理:手动截取关键片段、转录字幕、标…...
【PyCon 2024核心议题首发】:CPython 3.13 asyncio重构内幕——原生任务取消语义、零拷贝Socket API与异步GC优化前瞻
第一章:PyCon 2024与CPython 3.13异步演进全景图PyCon 2024于五月在匹兹堡圆满落幕,其核心议题之一正是CPython 3.13的异步能力跃迁。作为首个将async/await语义深度融入解释器底层的Python版本,3.13引入了原生协程调度优化、零拷贝内存视图支…...
为什么你的Flask农业API总在灌溉高峰期崩?Python高并发部署的4层熔断架构设计(实测QPS提升6.8倍)
第一章:为什么你的Flask农业API总在灌溉高峰期崩?Python高并发部署的4层熔断架构设计(实测QPS提升6.8倍) 当全省智能灌溉系统在每日清晨5:00–7:00集中调度水阀、上传土壤墒情数据时,基于默认配置的Flask API常出现进程…...
