C++ 动态字符串String的介绍及经典用法展示
std::string:
在C++中,std::string是标准模板库(STL)中的一个类,用于表示和操作字符串。std::string提供了丰富的功能来处理文本数据,包括字符串的创建、修改、搜索、比较和转换等操作。
std::string的特点:
1.动态字符串:std::string是一个动态字符串类,它可以根据需要自动调整大小。
2.操作简便:std::string提供了类似于C风格字符串的接口,使得字符串操作非常直观和方便。
3.安全性:std::string避免了C风格字符串的许多安全问题,如缓冲区溢出。
4.丰富的成员函数:std::string提供了许多成员函数,用于执行各种字符串操作,如查找、替换、连接、比较等。
5.迭代器支持:std::string支持迭代器,可以使用STL算法对字符串进行操作。
std::string的常见用法:
1.字符串操作:使用std::string进行字符串的创建、修改和操作。
2.字符串连接:使用+运算符或append成员函数将多个字符串连接起来。
3.字符串搜索:使用find、rfind、find_first_of、find_last_of等成员函数在字符串中搜索子串。
4.字符串比较:使用==、!=、<、>等运算符比较两个字符串。
5.字符串转换:使用to_string、stoi、stol、stoll等函数进行字符串与数值之间的转换。
std::string的经典C++用法:
在C++中,std::string是标准模板库(STL)中的一个类,用于表示和操作字符串。std::string提供了丰富的功能来处理文本数据,包括字符串的创建、修改、搜索、比较和转换等操作。以下是一些std::string的常见用法和操作示例:
创建和初始化字符串
#include <iostream>
#include <string>int main() {// 使用默认构造函数创建空字符串std::string str1;// 使用字符串字面量初始化字符串std::string str2 = "Hello, World!";// 使用C风格字符串初始化字符串const char* cstr = "Hello, C++!";std::string str3(cstr);// 使用另一个字符串初始化字符串std::string str4(str2);// 使用字符串字面量的子串初始化字符串std::string str5(str2, 7, 5); // 从位置7开始的5个字符// 使用迭代器范围初始化字符串std::string str6(str2.begin() + 7, str2.end());// 输出字符串std::cout << "str1: " << str1 << std::endl;std::cout << "str2: " << str2 << std::endl;std::cout << "str3: " << str3 << std::endl;std::cout << "str4: " << str4 << std::endl;std::cout << "str5: " << str5 << std::endl;std::cout << "str6: " << str6 << std::endl;return 0;
}
字符串修改
#include <iostream>
#include <string>int main() {std::string str = "Hello, World!";// 插入字符str.insert(7, ", ");// 替换子串str.replace(7, 5, "C++");// 删除子串str.erase(7, 5);// 清空字符串str.clear();// 输出修改后的字符串std::cout << "Modified string: " << str << std::endl;return 0;
}
字符串搜索
#include <iostream>
#include <string>int main() {std::string str = "Hello, World!";// 查找子串size_t pos = str.find("World");// 查找子串的逆序size_t rpos = str.rfind("World");// 查找字符size_t cpos = str.find('W');// 查找字符的逆序size_t rcpos = str.rfind('W');// 输出搜索结果std::cout << "Position of 'World': " << pos << std::endl;std::cout << "Reverse position of 'World': " << rpos << std::endl;std::cout << "Position of 'W': " << cpos << std::endl;std::cout << "Reverse position of 'W': " << rcpos << std::endl;return 0;
}
字符串比较
#include <iostream>
#include <string>int main() {std::string str1 = "Hello, World!";std::string str2 = "Hello, C++!";// 比较两个字符串if (str1 == str2) {std::cout << "str1 and str2 are equal." << std::endl;} else {std::cout << "str1 and str2 are not equal." << std::endl;}// 使用比较运算符if (str1 < str2) {std::cout << "str1 is less than str2." << std::endl;} else if (str1 > str2) {std::cout << "str1 is greater than str2." << std::endl;} else {std::cout << "str1 is equal to str2." << std::endl;}return 0;
}
字符串转换
#include <iostream>
#include <string>
#include <sstream>int main() {std::string str = "123";int num;// 将字符串转换为整数std::istringstream iss(str);iss >> num;// 输出转换后的整数std::cout << "Integer: " << num << std::endl;return 0;
}
字符串连接
#include <iostream>
#include <string>int main() {std::string str1 = "Hello, ";std::string str2 = "World!";// 使用+运算符连接字符串std::string str3 = str1 + str2;// 使用append成员函数连接字符串str1.append(str2);// 输出连接后的字符串std::cout << "Concatenated string: " << str3 << std::endl;std::cout << "Concatenated string: " << str1 << std::endl;return 0;
}
以上代码展示了std::string的一些常见用法,包括创建和初始化字符串、修改字符串、搜索字符串、比较字符串、转换字符串以及连接字符串。std::string类提供了非常丰富的功能,使得字符串操作变得非常方便和强大。在实际编程中,可以根据需要选择合适的方法来处理字符串。
相关文章:
C++ 动态字符串String的介绍及经典用法展示
std::string: 在C中,std::string是标准模板库(STL)中的一个类,用于表示和操作字符串。std::string提供了丰富的功能来处理文本数据,包括字符串的创建、修改、搜索、比较和转换等操作。 std::string的特点:…...
.NET Standard、.NET Framework 、.NET Core三者的关系与区别?
.NET Standard、.NET Framework 和 .NET Core 是 .NET 平台生态中的三个关键概念,它们之间存在明确的关系和显著的区别。下面分别阐述它们各自的角色以及相互间的关系: .NET Standard 角色: .NET Standard 是一套正式的 API 规范,…...
【国产AI持续突破带动互联网智能生态进入正循环】
2022年底ChatGPT横空出世带动AI产业大规模崛起,人工智能领域技术如雨后春笋一般迅速发芽,随着各领域不断深入探索AI大模型,该技术开始发展成新质生产力,在这个以数据驱动的新时代,AI芯片已成为新的战略资源,…...
全志 Linux Qt
一、简介 本文介绍基于 buildroot 文件系统的 QT 模块的使用方法: • 如何在 buildroot 工具里编译 QT 动态库; • 编译及运行 qt_demo 应用程序; • 适配过程遇到的问题。 二、QT动态库编译 在项目根路径执行 ./build.sh buildroot_menuc…...
微功耗数据监测终端可应用在哪些场景?
随着科技的飞速发展,绿色、低碳、可持续已成为当代社会发展的重要主题。微功耗电池供电遥测终端机,正是这一时代背景下的杰出代表。它采用先进的微功耗技术,有效延长电池使用寿命,减少频繁更换电池的麻烦,同时降低能源…...
Windows下Docker安装Kafka3+集群
编写 docker-compose.yaml 主要参照:https://www.cnblogs.com/wangguishe/p/17563274.html version: "3"services:kafka1:image: bitnami/kafka:3.4.1container_name: kafka1environment:- KAFKA_HEAP_OPTS-Xmx1024m -Xms1024m- KAFKA_ENABLE_KRAFTyes- K…...
关于前端资源文件打包问题
可以使用webpack CopyWebpackPlugin插件 CopyWebpackPlugin是一个用于在构建过程中共复制文件和文件夹的Webpack插件。可以帮助我们将特定的文件或文件夹从源目录复制到构建目录,使得这些文件能够在输出的bundle中被访问到。 使用步骤: 1、安装CopyWeb…...
蓝桥杯备考随手记: 常用的字符串排序方式
在Java中,有多种方式可以对字符串进行排序。 下面将详细介绍几种常用的方法: 使用String的compareTo()方法进行排序: String类自带了compareTo()方法用于比较两个字符串的大小关系。可以直接使用该方法在排序时实现字符串的自然排序。 Strin…...
Linux--进程(2)
目录 前言 1. 进程的状态 1.1 进程排队 1.2 运行,阻塞,挂起 2.Linux下具体的进程状态 2.1僵尸和孤儿 3.进程的优先级 4.Linux的调度与切换 前言 这篇继续来学习进程的其它知识 上篇文章:Linux--进程(1)-CS…...
贪心算法思想
求上下界极值: main(){对每一组输入数据计算比值的上下界,更新比值界限的极值全局最大的最小比值和全局最小的最大比值 }Note: V需要满足所有记录,所以取---->全局最大的最小比值和全局最小的最大比值 P9240 [蓝桥杯 2023 省 B] …...
PKI:构建数字安全基石的关键技术
在数字化时代,网络安全已成为我们日常生活和工作的重要组成部分。为了确保数据的完整性、机密性和身份的真实性,公钥基础设施(Public Key Infrastructure,简称PKI)技术应运而生,为构建数字安全基石提供了重…...
vue中实现路由鉴权和不同用户登录
路由鉴权 路由鉴权是指根据用户权限控制用户可以访问哪些路由。 Vue 中实现路由鉴权 Vue 中可以结合 Vuex 和路由守卫来实现路由鉴权。 1. 使用 Vuex 存储用户权限 创建一个 Vuex store 来存储用户权限。在登录成功后,将用户权限存储在 Vuex store 中。在路由守…...
Golang 开发实战day06 - Boolean Conditional
🏆个人专栏 🤺 leetcode 🧗 Leetcode Prime 🏇 Golang20天教程 🚴♂️ Java问题收集园地 🌴 成长感悟 欢迎大家观看,不执着于追求顶峰,只享受探索过程 Golang 教程06 - Boolean &a…...
内容多样化的秘密:Kompas.ai如何拓展你的内容形式
在这个信息爆炸的时代,内容多样化已成为品牌吸引和维系广泛受众的关键策略。多样化的内容形式不仅能够迎合不同用户的偏好,还能够提高内容的覆盖面和参与度,从而增强品牌的市场竞争力。本文将深入探讨内容形式多样化的重要性,展示…...
OneFlow深度学习框架介绍
OneFlow 是由中科院计算技术研究所和华为公司联合开发的开源深度学习框架,旨在为用户提供高效、灵活、易用的深度学习解决方案。以下是 OneFlow 深度学习框架的一些特点和介绍: 高性能:OneFlow 针对大规模模型和数据集进行了优化,…...
基于SSM的宠物管理系统
点击以下链接获取源码: https://download.csdn.net/download/qq_64505944/89076676?spm=1001.2014.3001.5503 技术:SSM(Spring+SpringMVC+MyBatis)+LayUI+Echarts技术栈,分页采用pagehelper插件,EasyExcel进行Excel文件的导入导出。 宠物管理系统 1 CHINER-宠物管理系…...
【第十二篇】使用BurpSuite实现CSRF(实战案例)
CSRF存在前提:简单的身份验证只能保证请求是发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的 业务场景:新增、删除、收藏、编辑、保存使用Burp发现CSRF漏洞的过程如下。 1、如图,存在修改邮箱的功能点如下: 2、修改邮箱的流量包,此时邮箱已被修改: 思路:是…...
css 手写返回箭头
因为在开发App时,为了自定义返回栏,返回箭头,一般都用图片,当图片不方便,最好用css样式实现。 逻辑: 画出一个正方形,让它旋转45度,只显示你需要的两个边即可 代码 <!DOCTYPE ht…...
爬虫逆向非对称加密和对称加密案例
注意!!!!某XX网站逆向实例仅作为学习案例,禁止其他个人以及团体做谋利用途!!! 案例--aHR0cHM6Ly9jcmVkaXQuaGxqLmdvdi5jbi94eWdzL3l6d2ZzeHF5bWQv 第一步:分析页面、请求…...
大数据基础设施搭建 - Spark
文章目录 一、解压压缩包二、修改配置文件conf/spark-env.sh三、测试提交Spark任务四、Spark on Hive配置4.1 创建hive-site.xml(spark/conf目录)4.2 查看hive的hive-site.xml配置与3.1配置的是否一致4.3 测试SparkSQL4.3.1 启动SparkSQL客户端ÿ…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...
实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...
系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
