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 优势: 轻量级支持基本绘图功能,如画线、圆等支持橡皮擦功能支持清空画布 劣势&…...

ChatGPT使用案例之生成PPT
ChatGPT使用案例之生成PPT ChatGPT使用案例系列我们一直在寻找ChatGPT在哪些方面可以可以帮我们节省时间提高效率,越来越多的用户发掘出了ChatGPT更多实用性的功能,其中一项便是协助用户快速生成PPT。 作为一个基于大型语言处理模型的文字聊天工具,ChatGPT能够帮助用户围绕…...

ChatGPT基础知识系列之模型介绍
ChatGPT基础知识系列之模型介绍 前面我们已经介绍很多ChatGPT的使用案例了,更多案例可以参考我们下面的文章 ChatGPT使用案例之写代码 ChatGPT使用案例之画思维导图 ChatGPT使用案例之自然语言处理 ChatGPT使用案例之操作Excel ChatGPT使用案例之图像生成 ChatGPT使用案…...

ChatGPT助力软件开发
抛开Stack Overflow不谈,开发人员有了一个新的好朋友,它就是ChatGPT。ChatGPT是由人工智能驱动的语言模型,可以理解代码,还可以用自然语言回答问题。有了它,程序员再也不用在无尽的Stack Overflow页面和评论中搜索答案…...

这些关于高压放大器的常识,你知道多少?(二)
高压放大器是一种用于放大高压信号的电子测量仪器,具有高压输出,低噪声,高精度,高稳定性,高可靠性,低功耗,低成本等的优点。关于高压放大器的相关常识,相信还有不少新手工程师不太了…...

使用神经网络中的卷积核生成语谱图
主题思想: 正交基函数, sin,cos 是通过网络训练得到的参数。 使用一维卷积核直接对于原始音频,进行卷积生成语谱图; 使用一维卷积核生成语谱图特征, 不同于以往的方式,正是因为这些正交基函数是通过卷积…...

文章五:Python 网络爬虫实战:使用 Beautiful Soup 和 Requests 抓取网页数据
一、简介 本篇文章将介绍如何使用 Python 编写一个简单的网络爬虫,从网页中提取有用的数据。我们将通过以下几个部分展开本文的内容: 网络爬虫的基本概念Beautiful Soup 和 Requests 库简介选择一个目标网站使用 Requests 获取网页内容使用 Beautiful Soup 解析网页内容提取…...

【大数据之Hadoop】八、MapReduce之序列化
1 概述 序列化: 把内存中的对象,转换成字节序列(或其他数据传输协议),以便于存储到磁盘(持久化)和网络传输。 反序列化: 将收到字节序列(或其他数据传输协议)…...

Python网络爬虫之Selenium详解
1、什么是selenium? Selenium是一个用于Web应用程序测试的工具。Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。支持通过各种driver(FirfoxDriver,IternetExplorerDriver,OperaDriver,ChromeDriver)驱动真实浏览器…...

中睿天下受邀出席电促会第五次会员代表大会
3月21日,中国电力发展促进会(以下简称“电促会”)第五次会员代表大会暨第五届理事会第一次会议在京召开,中睿天下作为网络安全专业委员会会员单位受邀出席。 会议表决通过了第五次会员代表大会工作报告、第四届理事会财务报告、《…...

Chat GPT:软件测试人员的危机?
Chat GPT,作为一个引起科技巨头“红色警报”的人工智能语言模型,短期内便席卷全球,上线仅两个月活跃用户破亿。比尔盖茨更是如此评价“这种AI技术出现的重大历史意义,不亚于互联网和个人电脑的诞生。” 在各个行业备受关注的Chat …...