C++常用字符串string方法
文章目录
- 字符串string操作方法
- 1. 类方法
- 使用示例
- 2. 头文件cstring方法
- 使用示例
字符串string操作方法
1. 类方法
在C++中,引入string.h
头文件可以使用C语言中的字符串操作函数。然而,C++提供了一个更加方便的字符串类string
,不需要引入string.h
头文件,可以直接使用其提供的方法。
后续第二部分会引入<cstring>的方法。<string.h>和<cstring>这两个头文件唯一的区别是,cstring是C++标准库中的头文件,而string.h是C标准库中的头文件。
以下是string
类中常用的方法:
-
length()
:返回字符串的长度。 -
size()
:返回字符串中字符的个数。 -
at(index)
:返回字符串中指定位置的字符。 -
substr(start, length)
:返回字符串中从指定位置开始的指定长度的子字符串。 -
append(str)
:将指定的字符串追加到当前字符串的末尾。 -
insert(pos, str)
:在指定位置插入指定的字符串。 -
erase(pos, length)
:从指定位置开始删除指定长度的字符。 -
replace(pos, length, str)
:用指定的字符串替换从指定位置开始的指定长度的字符。 -
find(str)
:在字符串中查找指定的子字符串。find()
方法返回的是子字符串在字符串中的位置,如果找不到则返回string::npos
-
compare(str)
:比较两个字符串是否相等。
使用示例
#include <iostream>
#include <string>using namespace std;int main() {string str = "Hello World!";// 使用length()方法获取字符串的长度int len = str.length();cout << "Length of str: " << len << endl; // 输出:Length of str: 12// 使用size()方法获取字符串中字符的个数int size = str.size();cout << "Size of str: " << size << endl; // 输出:Size of str: 12// 使用at()方法获取指定位置的字符char ch = str.at(6);cout << "Character at position 6: " << ch << endl; // 输出:Character at position 6: W// 使用substr()方法获取子字符串string subStr = str.substr(6, 5);cout << "Sub-string: " << subStr << endl; // 输出:Sub-string: World// 使用append()方法将字符串追加到末尾str.append(" Goodbye!");cout << str << endl; // 输出:Hello World! Goodbye!// 使用insert()方法在指定位置插入字符串(之前)str.insert(6, "there ");cout << str << endl; // 输出:Hello there World! Goodbye!// 使用erase()方法删除指定位置的字符str.erase(5, 6);cout << str << endl; // 输出:New string: Hello World! Goodbye!// 使用replace()方法替换指定位置的字符str.replace(6, 5, "there");cout << str << endl; // 输出:New string: Hello there! Goodbye!// 使用find()方法查找子字符串size_t pos = str.find("World");if (pos != string::npos) {cout << "Found 'World' at position " << pos << endl; } else {cout << "Unable to find 'World'" << endl;// 输出:Unable to find 'World' }// 使用find()方法查找子字符串pos = str.find("bye");if (pos != string::npos) {cout << "Found 'bye' at position " << pos << endl; // 输出:Found 'bye' at position 17} else {cout << "Unable to find 'bye'" << endl;}// 使用compare()方法比较两个字符串是否相等string str1 = "Hello";string str2 = "hello";int result = str1.compare(str2);if (result == 0) {cout << "Strings are equal" << endl;} else if (result < 0) {cout << "str1 is less than str2" << endl; // √ } else {cout << "str1 is greater than str2" << endl;}return 0;
}
2. 头文件cstring方法
C++中可以使用以下函数来操作字符串:
-
strlen()
:返回一个字符串的长度。 -
strcpy()
:将一个字符串复制到另一个字符串中。 -
strcat()
:将一个字符串追加到另一个字符串的末尾。 -
strcmp()
:用于比较两个字符串是否相等。 -
strstr()
:在一个字符串中查找另一个字符串。 -
strtok()
:用于将一个字符串分割成多个子字符串。 -
tolower()
:将字符串中的所有字符转换为小写字母。 -
toupper()
:将字符串中的所有字符转换为大写字母。 -
isalpha()
:用于判断一个字符是否为字母。 -
isdigit()
:用于判断一个字符是否为数字。
这些函数都是C++标准库中提供的字符串操作函数,非常常用。
使用示例
#include <iostream>
#include <cstring>using namespace std;int main()
{char str1[20] = "Hello";char str2[20] = "World";char str3[20];// 使用strcpy将str1复制到str3中strcpy(str3, str1);cout << "str3: " << str3 << endl; // 输出:str3: Hello// 使用strcat将str2追加到str3的末尾strcat(str3, str2);cout << "str3: " << str3 << endl; // 输出:str3: HelloWorld// 使用strcmp比较str1和str2int result = strcmp(str1, str2);if (result < 0){cout << "str1 is less than str2" << endl; // 输出:str1 is less than str2}else if (result > 0){cout << "str1 is greater than str2" << endl;}else{cout << "str1 is equal to str2" << endl;}// 使用strstr在str3中查找"World"char* ptr = strstr(str3, "World");cout << "ptr: " << ptr << endl; // 输出:ptr: World// 使用strtok将str3分割成多个子字符串char* token = strtok(str3, " ");while (token != NULL){cout << token << endl;token = strtok(NULL, " ");}// 输出:// HelloWorldreturn 0;
}
相关文章:
C++常用字符串string方法
文章目录字符串string操作方法1. 类方法使用示例2. 头文件cstring方法使用示例字符串string操作方法 1. 类方法 在C中,引入string.h头文件可以使用C语言中的字符串操作函数。然而,C提供了一个更加方便的字符串类string,不需要引入string.h头…...

XML树结构和语法
文章目录一、XML 树结构二、XML 语法规则总结一、XML 树结构 XML 树结构 XML 文档形成了一种树结构,它从"根部"开始,然后扩展到"枝叶"。 一个 XML 文档实例 XML 文档使用简单的具有自我描述性的语法: <?xml vers…...
【Qt】Qt单元测试详解(四):Google Test 断言
1、创建测试工程 【Qt】Qt单元测试详解(一):通过QtCreator创建测试工程 2、添加测试代码 2.1 默认生成的代码 1)项目工程pro include(gtest_dependency.pri)TEMPLATE = app CONFIG += console c++14 CONFIG -= app_bundle CONFIG += thread CONFIG -= qtHEADERS += \t…...
句柄和指针的区别
句柄和指针都是一种数据结构,都常用于访问内存,下面介绍他们的一些不同点。 1 数据结构类型不同 指针的数据类型是无符号整数,占用4或8个字节(在32位和64位系统中),它就像一个变量一样,这个变量…...
Linux 网络编程学习笔记——十四、多线程编程
目录 早期 Linux 不支持线程,直到 1996 年,Xavier Leroy 等人才开发出第一个基本符合 POSIX 标准的线程库 LinuxThreads 。但 LinuxThreads 效率低而且问题很多。自内核 2.6 开始,Linux 才真正提供内核级的线程支持,并有两个组织…...
JS 获取时区
JS 获取时区 啥是时区? 时区是地球上的区域使用同一个时间定义。以前,人们通过观察太阳的外置(时角)决定时间,这就使得不同经度的地方的时间各有不同,为了统一使用同一个时间,就引入了时区的概…...

【0183】PG内核客户端认证之将读取的token创建HbaToken(3 - 1)
文章目录 1. 将HbaToken添加到List指针变(续)1.1 示意图的一些问题1.2 修复后的示意图2. 将一行HBA所有字段添加到current_line2.1 代码实现2.2 示意图实现1. 将HbaToken添加到List指针变(续) 在【0182】PG内核客户端认证之将读取的token创建HbaToken(3) 一文中的第3节中…...

别把 OpenAI 太当回事,它远未达到替换前端的地步
最近几个月,我和很多初入行的开发人员交谈,他们对AI越来越感到焦虑。他们看到像GPT-4这样的工具展示的越来越令人印象深刻的演示,担心等他们掌握了HTML/CSS/JS,就没有任何工作机会了。这种情绪现在在Twitter上广泛存在:…...

前端基础HTML、CSS--8(CSS-5)
目标: 能够说出为什么要用定位 能够说出定位的4种分类 能够说出4种定位各自的特点 能够说出为什么常用子绝父相布局 能够写出淘宝轮播图布局 能够说出显示隐藏的2种方式以及区别 目录: 定位 综合案例 网页布局总结 元素的显示与隐藏 1.定位 …...

基于ASP网络办公OA系统的设计与实现
本系统是一个企业办公自动化系统,它简单易操作,第一次使用的用户只需申请一个本人的帐户,就可以方便的使用本系统了。 系统的用户分为3类,第一类为普通用户,第二类为管理员,第三类为超级用户。 1通过Web添加文件。操…...
C语言计算机二级/C语言期末考试 刷题(五)
收集了一些经典C语言计算机二级和C语言期末考试题库 整理不易,大家点赞收藏支持一下 祝大家计算机二级和期末考试都高分过 系列文章: C语言计算机二级/C语言期末考试 刷题(一) C语言计算机二级/C语言期末考试 刷题(二…...

2023-04-03 grafana-源码编译启动及添加prometheus数据源
摘要: 记录grafana-源码编译启动及添加prometheus数据源 代码仓库: https://github.com/adofsauron/tiflow-dev/tree/main/trunk/grafana-9.4.7 依赖: 必须为go1.19版本,低于此版本则编译报错 go version go1.19.2 linux/amd64 yum install -y yarnpkg 编译: ht…...

微软New Bing(GPT-4)写的Delphi诗歌
你好,这是Bing。我很高兴你对Delphi感兴趣。Delphi是一种编程语言,可以用来开发各种应用程序。我尝试写了一首赞美Delphi的诗歌,希望你喜欢: Delphi,Delphi,你是我的灵感 你让我创造出美妙的程序 你的语法…...

【进程地址空间】
目录:前言一、进程地址空间(一)进程地址空间是什么(二)为什么要有进程地址空间(三)重新理解进程地址空间前言 打怪升级:第52天一、进程地址空间 打怪升级之路开始!&…...

递归dfs入门
做题方法:确定枚举顺序,画出递归树 递归实现指数型枚举 题目编号: acwing.92.递归实现指数型枚举 题目描述: 从 1∼n 这 n 个整数中随机选取任意多个,输出所有可能的选择方案。 输入格式: 输入一个整数 n…...

华为OD机试用java实现 -【吃火锅】
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:吃火锅 题目 入职后,导师会…...
AI创作优美文章的秘密大揭秘!
随着人工智能技术的快速发展和普及,越来越多的企业和研究机构开始使用AI编程来优化其业务流程和提高效率。AI编程可以被定义为利用人工智能技术来完成特定任务的一种方法。它涵盖了机器学习、深度学习、自然语言处理、计算机视觉等多个领域,可以帮助企业…...

SpringMVC的拦截器
SpringMVC的拦截器 SpringMVC的拦截器SpringMVC的拦截器01-SpringMVC拦截器-拦截器的作用(理解)02-SpringMVC拦截器-interceptor和filter区别(理解,记忆)03-SpringMVC拦截器-快速入门(应用)(1)项目前准备(2)快速入门01…...
dolphinscheduler-3.1.4
1、相关环境 1.1、创建用户,配置免密 useradd hadoop; echo "Hadoop#149" | passwd --stdin hadoop#配置sudo免密 sed -i $ahadoop ALL(ALL) NOPASSWD: NOPASSWD: ALL /etc/sudoers sed -i s/Defaults requirett/#Defaults requirett/g /etc/su…...
大前端05-用vue轻量级第三方组件库快速创建个画板,可以支持画板、直线、圆形等输入,可以撤回,改变颜色
第三方组件介绍: 1. vue-whiteboard vue-whiteboard 是一个基于Vue.js的轻量级画板组件库。 GitHub仓库: https://github.com/craynic/vue-whiteboard 优势: 轻量级支持基本绘图功能,如画线、圆等支持橡皮擦功能支持清空画布 劣势&…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...

企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...

云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...

LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
用鸿蒙HarmonyOS5实现中国象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...