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

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风格的字符串&#xff0c;本质上是一个类。 string 和 char* 的区别 char* 是一个指针&#xff1b; string是一个类&#xff0c;内部封装了 char* &#xff0c;用来管理字符串&#xff0c;是一个 char* 型的容器。 特点 string内部封装了很多成员…...

半导体工艺技术

完整内容点击&#xff1a;【半导体工艺技术】...

acwing算法提高之图论--单源最短路的扩展应用

目录 1 介绍2 训练 1 介绍 本专题用来记录使用。。。。 2 训练 题目1&#xff1a;1137选择最佳线路 C代码如下&#xff0c; #include <iostream> #include <cstring> #include <algorithm> #include <queue>using namespace std;const int N 101…...

SQLServer数据库使用Function实现根据字段内容的拼音首字母进行数据查询

实现SQL首字母查询分两步&#xff0c;第一步建Function&#xff0c;第二步引用新建的Function。 1. 首先需要自定义一个查询的Function&#xff0c;详细SQL如下&#xff1a; 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语言中毫不相关的两个概念&#xff0c;虽然实际过程中我猜测不会有太多这种不太符合常理的情况出现&#xff0c;但是现在在学习的过程中&#xff0c;为了出题而出题总是会整出一些花活出来.....这很难不让人联想起高中时一些大佬为了彰显自己的数学天赋而自己…...

数据结构 - 算法效率|时间复杂度|空间复杂度

目录 1.算法效率 2.时间复杂度 2.1定义 2.2大O渐近表示法 2.3常见时间复杂度计算举例 3.空间复杂度 3.1定义 3.2常见空间复杂度计算举例 1.算法效率 算法的效率常用算法复杂度来衡量&#xff0c;算法复杂度描述了算法在输入数据规模变化时&#xff0c;其运行时间和空间…...

接口自动化之 + Jenkins + Allure报告生成 + 企微消息通知推送

接口自动化之 Jenkins Allure报告生成 企微消息通知推送 在jenkins上部署好项目&#xff0c;构建成功后&#xff0c;希望可以把生成的报告&#xff0c;以及结果统计发送至企微。 效果图&#xff1a; 实现如下。 1、生成allure报告 a. 首先在Jenkins插件管理中&#x…...

『Apisix安全篇』探索Apache APISIX身份认证插件:从基础到实战

&#x1f680;『Apisix系列文章』探索新一代微服务体系下的API管理新范式与最佳实践 【点击此跳转】 &#x1f4e3;读完这篇文章里你能收获到 &#x1f6e0;️ 了解APISIX身份认证的重要性和基本概念&#xff0c;以及如何在微服务架构中实施API安全。&#x1f511; 学习如何使…...

【01-20】计算机网络基础知识(非常详细)从零基础入门到精通,看完这一篇就够了

【01-20】计算机网络基础知识&#xff08;非常详细&#xff09;从零基础入门到精通&#xff0c;看完这一篇就够了 以下是本文参考的资料 欢迎大家查收原版 本版本仅作个人笔记使用1、OSI 的七层模型分别是&#xff1f;各自的功能是什么&#xff1f;2、说一下一次完整的HTTP请求…...

『大模型笔记』常见的分布式并行策略(分布式训练)

常见的分布式并行策略(分布式训练) 文章目录 一. 为什么分布式训练越来越流行二. 常见的并行策略2.1 数据并行2.2 模型并行2.3 流水并行2.4 混合并行二. 参考文献一. 为什么分布式训练越来越流行 近年来,深度学习被广泛应用到各个领域,包括计算机视觉、语言理解、语音识别、广…...

java 企业工程管理系统软件源码+Spring Cloud + Spring Boot +二次开发+ 可定制化

工程项目管理软件是现代项目管理中不可或缺的工具&#xff0c;它能够帮助项目团队更高效地组织和协调工作。本文将介绍一款功能强大的工程项目管理软件&#xff0c;该软件采用先进的Vue、Uniapp、Layui等技术框架&#xff0c;涵盖了项目策划决策、规划设计、施工建设到竣工交付…...

3D数据格式导出工具HOOPS Publish如何生成高质量3D PDF?

在当今数字化时代&#xff0c;从建筑设计到制造业&#xff0c;从医学领域到电子游戏开发&#xff0c;3D技术已经成为了不可或缺的一部分。在这个进程中&#xff0c;将3D模型导出为3D PDF格式具有重要的意义。同时&#xff0c;HOOPS Publish作为一个领先的解决方案&#xff0c;为…...

【springboot】闲话 springboot 的几种异步机制 及 长轮询的概念和简单实现

文章目录 引子springboot的几种异步形式开启异步支持和线程池配置&#xff08;重要&#xff09;第一种&#xff1a;Async第二种&#xff1a;Callable<T>第三种&#xff1a;WebAsyncTask<T>第四种&#xff1a;DeferredResult<T> 长轮询的简单实现概念实现服务…...

Mysql---安全值守常用语句

文章目录 目录 文章目录 一.用户权限设置 用户设置 元数据查询 Union联合查询 分组查询 字符串函数 总结 一.用户权限设置 用户设置 #用户创建 create user "用户名""%主机名" identified by "密码" #用户删除 drop user 用户名 #用户查询…...

containerd快速安装指南

1 containerd快速安装指南&#x1f680; 本指南旨在提供一个简洁有效的方法来安装containerd。我们将通过一份易于理解的脚本步骤&#xff0c;指导您完成安装&#x1f527;。请根据您的实际需求&#xff0c;适当调整containerd版本及其相关依赖。 注意事项&#xff1a; 本安装…...

Javascript - 正则表达式相关的一些基础的范例

很久以前的一些学习资料&#xff0c;归档发布&#xff1b; 正则表达式的基础&#xff0c;以HTML代码来示范&#xff1a; <html><head><title></title><script language"javascript">function test(){//从页面要求客户输入一个字符串…...

JUC:线程活跃性(死锁、活锁、饥饿)

文章目录 线程活跃性死锁活锁解饿 线程活跃性 死锁 两个线程相互等待对方已拥有的锁&#xff0c;就会相互一直等待&#xff0c;不会停止。 t1拥有a锁&#xff0c;等待b锁。 t2拥有b锁&#xff0c;等待a锁。 Slf4j(topic "c.Test3") public class st3 {public st…...

RGB到灰度图像的转换原理及例程

RGB到灰度图像的转换是一种常用的图像处理操作&#xff0c;其原理是根据人眼对不同颜色的敏感度&#xff0c;将彩色图像的红、绿、蓝三个通道的像素值按照一定权重进行加权平均&#xff0c;得到灰度图像的像素值。 在RGB图像中&#xff0c;每个像素点由红、绿、蓝三个分量组成…...

PCA+DBO+DBSCN聚类,蜣螂优化算法DBO优化DBSCN聚类,适合学习,也适合发paper!

PCADBODBSCN聚类&#xff0c;蜣螂优化算法DBO优化DBSCN聚类&#xff0c;适合学习&#xff0c;也适合发paper&#xff01; 一、蜣螂优化算法 摘要&#xff1a;受蜣螂滚球、跳舞、觅食、偷窃和繁殖等行为的启发&#xff0c;提出了一种新的基于种群的优化算法(Dung Beetle Optim…...

JAVA:类和对象完全解析

一、编程世界的乐高积木在面向对象编程&#xff08;OOP&#xff09;的宇宙中&#xff0c;类&#xff08;Class&#xff09;和对象&#xff08;Object&#xff09;如同乐高积木的基础模块。如果把程序看作一个虚拟城市&#xff0c;类就是建筑设计图&#xff0c;而对象则是根据图…...

技术生命周期管理:从恐龙化石到活化石的工程实践

1. 项目概述&#xff1a;一场跨越十年的技术怀旧竞赛2012年5月底&#xff0c;EE Times网站上的一则简短公告&#xff0c;宣告了一场名为“Pushing back the sands of time”的漫画配文竞赛结果揭晓。这场竞赛的核心&#xff0c;是一幅描绘了实验室场景的漫画&#xff0c;参赛者…...

Windows系统美化终极指南:如何快速实现个性化定制与性能优化 [特殊字符]

Windows系统美化终极指南&#xff1a;如何快速实现个性化定制与性能优化 &#x1f680; 【免费下载链接】Atlas &#x1f680; An open and lightweight modification to Windows, designed to optimize performance, privacy and usability. 项目地址: https://gitcode.com/…...

企业如何通过Taotoken实现API Key的统一管理与审计

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 企业如何通过Taotoken实现API Key的统一管理与审计 在将大模型能力集成到企业业务流程的过程中&#xff0c;一个常见的挑战是如何安…...

3秒定位Windows热键冲突:Hotkey Detective终极检测工具完整指南

3秒定位Windows热键冲突&#xff1a;Hotkey Detective终极检测工具完整指南 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective …...

Cursor Pro免费终极指南:一键破解限制,永久解锁AI编程助手完整功能

Cursor Pro免费终极指南&#xff1a;一键破解限制&#xff0c;永久解锁AI编程助手完整功能 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能:…...

基于Gemini与Elasticsearch构建智能数据查询命令行工具

1. 项目概述&#xff1a;当Elasticsearch遇见Gemini&#xff0c;一个命令行智能体的诞生 最近在开源社区里闲逛&#xff0c;发现了一个挺有意思的项目&#xff1a; elastic/gemini-cli-elasticsearch 。光看这个名字&#xff0c;就能嗅到一股“强强联合”的味道。Elasticsea…...

Pearcleaner:彻底清理Mac应用的终极免费开源解决方案

Pearcleaner&#xff1a;彻底清理Mac应用的终极免费开源解决方案 【免费下载链接】Pearcleaner A free, source-available and fair-code licensed mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner 在Mac系统中卸载应用程序后&#xff0c;你是…...

告别枯燥理论:用Verilog在FPGA上实现一个可交互的I2C温度传感器从机

从零构建FPGA上的智能温度传感器&#xff1a;Verilog I2C从机实战指南 当你想在FPGA上连接一个温度传感器时&#xff0c;市面上常见的I2C传感器如LM75似乎是个简单选择——但你是否想过&#xff0c;用Verilog自己实现一个会是什么体验&#xff1f;本文将带你从协议层开始&#…...

AI Agent配置安全实践:用Config-Guard为自动化变更加锁

1. 项目概述&#xff1a;为AI Agent系统配置变更加上“安全锁”如果你正在运行一个基于OpenClaw或其他类似框架的AI Agent系统&#xff0c;那么你一定对那个核心的配置文件——通常是openclaw.json或类似的config.json——又爱又恨。它掌控着网关、模型、渠道和工具的命脉&…...