C++ string 类

文章目录

  • 引用头文件
  • 初始化赋值
    • 1. 空串
    • 2. 拷贝复制
    • 3. 直接初始化赋值
    • 4. 单个字符初始化
  • 遍历 string 类
    • 1. 下标索引遍历
    • 2. 迭代器遍历
    • 3. 使用 range for 循环遍历字符串(需要 C++11 或更新的版本)
  • string 常用方法
    • 判断字符串是否为空串
    • 获取字符串中字符个数
    • 插入元素
    • 删除元素
    • 追加字符串
    • 替换字符串中指定字符
    • 字符串翻转
    • 返回可以直接打印的字符串
    • 处理string对象中的字符 ,针对某个字符的特性判断函数

引用头文件

#include <iostream>
#include <string>

初始化赋值

1. 空串

string s; //s是一个空串

2. 拷贝复制

string s2=s1; //拷贝初始化,s1是string类对象
string s2(s1); //直接初始化,s1是string类对象

3. 直接初始化赋值

string s1=“hello world”; //拷贝初始化
string s2(“hello world”); //直接初始化

4. 单个字符初始化

string s(10, 'a'); //直接初始化,s的内容是aaaaaaaaaa

遍历 string 类

1. 下标索引遍历

#include <iostream>
#include <string>int main() {std::string str = "Hello World";for (int i = 0; i < str.length(); i++) {std::cout << str[i] << std::endl;}return 0;
}

2. 迭代器遍历

#include <iostream>
#include <string>int main() {std::string str = "Hello World";for (std::string::iterator it = str.begin(); it != str.end(); ++it) {std::cout << *it << std::endl;}return 0;
}

3. 使用 range for 循环遍历字符串(需要 C++11 或更新的版本)

#include <iostream>
#include <string>int main() {std::string str = "Hello World";for (char c : str) {std::cout << c << std::endl;}return 0;
}

string 常用方法

判断字符串是否为空串

s.empty( ) 判断字符串是否为空串

获取字符串中字符个数

  1. s.size( ) 获取字符串中字符个数
  2. s.length( ) 获取字符串中字符个数

两种方法并没有区别

// 在 s 的位置 0 之前插入 s2 的拷贝
s.insert(0, s2) 

插入元素

s.insert(pos, args) 在 pos 之前插入 args 指定的字符

// 在 s 的位置 0 之前插入 s2 的拷贝
s.insert(0, s2) 

删除元素

s.erase(pos, len) 删除从 pos 开始的 len 个字符。如果 len 省略,则删除 pos 开始的后面所有字符。返回一个指向 s 的引用

追加字符串

s.append(args) 将 args 追加到 s。返回一个指向 s 的引用。 args 必须是双引号字符串

替换字符串中指定字符

s.replace(range, args) 将 s 中范围为 range 内的字符替换为 args 指定的字符

#include <iostream>
#include <string>
using namespace std;
int main() { string s1 ="hello world!";// 从位置 3 开始,删除 6 个字符,并插入 "aaa".删除插入的字符数量不必相等s1.replace(3, 6, "aaa");cout << s1 << endl;return 0;
}输出: helaaald!

字符串翻转

s.reverse() 翻转字符串

#include <iostream>
#include <algorithm> 
string s2 = "12345";    // 初始化一个字符串
reverse(s2.begin(), s2.end()); // 反转 string 定义的字符串 s2 
cout << s2 << endl; // 输出 54321

返回可以直接打印的字符串

s.c_str() 返回一个正规的C字符串指针也就是char* 类型的指针

#include <iostream>
#include <string>int main()
{char* c;std::string a="1234";c = (char*)a.c_str();printf("c = %s \n", c);return 0;
}

处理string对象中的字符 ,针对某个字符的特性判断函数

C++标准库中 cctype 中的主要函数,该库主要是字符处理功能,这个头文件声明了一组函数来分类和变换单个字符。这个库中主要有两种函数:一类负责字符分类功能;一类负责字符转换功能。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/51208.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据中台容易失败的20多种原因全部在这里了

数据中台失败的原因总结 在当今数字化转型的浪潮中&#xff0c;数据中台作为关键的战略举措被越来越多的企业所关注和实施。然而&#xff0c;数据中台项目的实施过程中并不乏失败案例&#xff0c;这引业界对于数据中台失败原因的深入思考和分析。通过一些公开的信息和数据&…

如何使用海艺人工智能生成创意汉字

1、用某种字体生成文字。 jf storehttps://store.justfont.com/fonts 2、打开seaart。ai网站。https://www.seaart.ai/home 3、效果如下。 4、右键保存图片。

【算法日志】动态规划刷题:路径数问题(day34)

代码随想录刷题60Day 目录 前言 不同路径 不同路径(2) 前言 今天的动态规划题与昨天的题很类似&#xff0c;只不过今天的题是在二维上讨论&#xff0c;难度上略有提升。 不同路径 int uniquePaths(int m, int n) {vector<int> dp(n 1, 1);for (int i 1; i < m; …

C语言:选择+编程(每日一练Day7)

目录 选择题&#xff1a; 题一&#xff1a; 题二&#xff1a; 题三&#xff1a; 题四&#xff1a; 题五&#xff1a; 编程题&#xff1a; 题一&#xff1a;图片整理 思路一&#xff1a; 思路二&#xff1a; 题二&#xff1a;寻找数组的中心下标 思路一&#xff1…

高阶数据结构跳表

"想象为翼&#xff0c;起飞~" 跳表简介&#xff1f; skiplist本质上是一种查找结构&#xff0c;用于解决算法中的查找问题&#xff0c;跟平衡搜索树和哈希表的价值是 一样的&#xff0c;可以作为key或者key/value的查找模型。 跳表由来 skiplist是由美国计算…

Matplotlib数据可视化(五)

目录 1.绘制折线图 2.绘制散点图 3.绘制直方图 4.绘制饼图 5.绘制箱线图 1.绘制折线图 import matplotlib.pyplot as plt import numpy as np %matplotlib inline x np.arange(9) y np.sin(x) z np.cos(x) # marker数据点样式&#xff0c;linewidth线宽&#xff0c;li…

Fegin异步情况丢失上下文问题

在微服务的开发中&#xff0c;我们经常需要服务之间的调用&#xff0c;并且为了提高效率使用异步的方式进行服务之间的调用&#xff0c;在这种异步的调用情况下会有一个严重的问题&#xff0c;丢失上文下 通过以上图片可以看出异步丢失上下文的原因是不在同一个线程&#xff0c…

基于React实现日历组件详细教程

前言 日历组件是常见的日期时间相关的组件&#xff0c;围绕日历组件设计师做出过各种尝试&#xff0c;展示的形式也是五花八门。但是对于前端开发者来讲&#xff0c;主要我们能够掌握核心思路&#xff0c;不管多么奇葩的设计我们都能够把它做出来。 本文将详细分析如何渲染一…

【Python原创毕设|课设】基于Python Flask的上海美食信息与可视化宣传网站项目-文末附下载方式以及往届优秀论文,原创项目其他均为抄袭

基于Python Flask的上海美食信息与可视化宣传网站&#xff08;获取方式访问文末官网&#xff09; 一、项目简介二、开发环境三、项目技术四、功能结构五、运行截图六、功能实现七、数据库设计八、源码获取 一、项目简介 随着大数据和人工智能技术的迅速发展&#xff0c;我们设…

解决Oracle中XML插入数据时的空格问题

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

2.含电热联合系统的微电网运行优化

含电热联合系统的微电网运行优化 MATLAB代码&#xff1a;含电热联合系统的微电网运行优化 关键词&#xff1a;微网 电热联合系统 优化调度 参考文档&#xff1a;《含电热联合系统的微电网运行优化》完全复现 仿真平台&#xff1a;MATLAB yalmipcplex [火]主要内容&#xf…

k8s 常用命令(三)

1、查看版本信息&#xff1a;kubectl version [rootmaster ~]# kubectl version [rootmaster ~]# kubectl version Client Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.3", GitCommit:"ca643a4d1f7bfe34773c74f7952…

JAVA开发环境接口swagger-ui使用总结

一、前言 swagger-ui是java开发中生产api说明文档的插件&#xff0c;这是后端工程师和前端工程师联调接口的桥梁。生成的文档就减少了很多没必要的沟通提高开发和测试效率。 二、 swagger-ui的使用 1、引入maven依赖 <dependency><groupId>io.springfox</grou…

cpolar+JuiceSSH实现手机端远程连接Linux服务器

文章目录 1. Linux安装cpolar2. 创建公网SSH连接地址3. JuiceSSH公网远程连接4. 固定连接SSH公网地址5. SSH固定地址连接测试 处于内网的虚拟机如何被外网访问呢?如何手机就能访问虚拟机呢? cpolarJuiceSSH 实现手机端远程连接Linux虚拟机(内网穿透,手机端连接Linux虚拟机) …

keepalived+lvs(DR)(四十六)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、作用 二、调度器配置 三、web节点配置 一、作用 使用keepalived解决lvs的单点故障 高可用集群 二、调度器配置 安装keepalived yum install -y k…

评测PlayStation Portal:价格、设计、连接选项等

PlayStation Portal发出PlayStation手持设备返回的信号。这款新设备最初在2023年3月的PlayStation Showcase上被宣布为Project Q&#xff0c;它将允许你通过强大的Wi-Fi信号在任何地方播放最好的PS5游戏。 虽然PlayStation Portal可能不是PlayStation Portable和PlayStation G…

leetcode几个数组题

数组理论基础 数组是存放在连续内存空间上的相同类型数据的集合 因为数组的在内存空间的地址是连续的&#xff0c;所以我们在删除或者增添元素的时候&#xff0c;就难免要移动其他元素的地址 二分查找 移除元素 有序数组的平方 209.长度最小的子数组

jenkins 日志输出显示时间戳的方式

网上很多方式比较片面&#xff0c;最新版插件直接使用即可无需更多操作。 使用方式如下&#xff1a; 1.安装插件 Timestamper 2.更新全局设置 系统设置-找到 Timestamper 勾选 Enabled for all Pipeline builds 也可修改时间戳格式。 帮助信息中显示 When checked, timesta…

马原——5.两大总特征(辩证法)

两大总特征是解释了世界是怎样存在的。 三大规律是对两大总特征的进一步细化 对立统一规律解释了世界是怎样联系的&#xff0c;为什么发展 量变质变规律解释了怎样发展 否定之否定规律那里发展 五对基本范畴解释了联系和发展环节上的逻辑 客观性&#xff1a;不以人的意志为转…

使用easyExcel导入导出Date类型的转换问题

起因&#xff1a;在业务需求上需要将Excel表中的日期导入&#xff0c;存储到数据库中&#xff0c;但是entity中的日期类型使用Date来接收&#xff0c;这样导致时间精确到秒。这时&#xff0c;即使使用DateTimeFormat("yyyy-MM-dd")也无法成功转换&#xff0c;会报如下…