C++ string 类

news2025/1/9 23:46:15

文章目录

  • 引用头文件
  • 初始化赋值
    • 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.coloradmin.cn/o/923502.html

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

相关文章

Mysql简短又易懂

MySql 连接池:的两个参数 最大连接数&#xff1a;可以同时发起的最大连接数 单次最大数据报文&#xff1a;接受数据报文的最大长度 数据库如何存储数据 存储引擎&#xff1a; InnoDB:通过执行器对内存和磁盘的数据进行写入和读出 优化SQL语句innoDB会把需要写入或者更新的数…

FFI绕过disable_functions

文章目录 FFI绕过disable_functions[RCTF 2019]NextphpPHP7.4 FFI参考 FFI绕过disable_functions [RCTF 2019]Nextphp 首先来看这道题目 index.php <?php if (isset($_GET[a])) {eval($_GET[a]); } else {show_source(__FILE__); }查看一下phpinfo 发现过滤了很多函数&…

如何高效管理生产物料?

导 读 ( 文/ 2358 ) 所谓巧妇难为无米之炊&#xff0c;物料是生产过程的必需品&#xff0c;确保物料及时到料尤为关键&#xff0c;但堆积过多的物料库存将导致不必要的成本挤压。做好生产物料管理是门技术活&#xff0c;它的目标是确保所需的物料按时提供给生产线&#xff0c;以…

嘉立创EDA设计学习笔记1:开发环境下载与熟悉

今日开始尝试自己学习绘制PCB开发板&#xff0c;使得以后的学习小项目制作的成品不再受外形大小与他人布线的限制&#xff0c;用的软件是嘉立创EDA设计软件&#xff0c;这样直接布线检查与下单&#xff0c;十分方便。 嘉立创EDA设计软件下载&#xff1a; 首先上网址&#xff0…

【IMX6ULL驱动开发学习】09.Linux之I2C框架简介和驱动程序模板

参考&#xff1a;Linux之I2C驱动_linux i2c驱动_风间琉璃•的博客-CSDN博客​​​​​​ 目录 一、I2C驱动框架简介 1.1 I2C总线驱动 1.2 I2C设备驱动 二、I2C总线-设备-驱动模型 2.1 i2c_driver 2.2 i2c_client 2.3 I2C 设备数据收发和处理 三、Linux I2C驱动程序模板…

redis常用五种数据类型详解

目录 前言&#xff1a; string 相关命令 内部编码 应用场景 hash 相关命令 内部编码 应用场景 list 相关命令 内部编码 应用场景 set 相关命令 内部编码 应用场景 Zset 相关命令 内部编码 应用场景 渐进式遍历 前言&#xff1a; redis有多种数据类型&…

Java实现一个简单的图书管理系统(内有源码)

简介 哈喽哈喽大家好啊&#xff0c;之前作者也是讲了Java不少的知识点了&#xff0c;为了巩固之前的知识点再为了让我们深入Java面向对象这一基本特性&#xff0c;就让我们完成一个图书管理系统的小项目吧。 项目简介&#xff1a;通过管理员和普通用户的两种操作界面&#xff0…

【网络安全】防火墙知识点全面图解(三)

本系列文章包含&#xff1a; 【网络安全】防火墙知识点全面图解&#xff08;一&#xff09;【网络安全】防火墙知识点全面图解&#xff08;二&#xff09;【网络安全】防火墙知识点全面图解&#xff08;三&#xff09; 防火墙知识点全面图解&#xff08;三&#xff09; 39、什…

生成式人工智能的潜在有害影响与未来之路(二)

利润高于隐私&#xff1a;不透明数据收集增加 背景和风险 生成型人工智能工具建立在各种大型、复杂的机器学习模型之上&#xff0c;这些模型需要大量的训练数据才能发挥作用。对于像ChatGPT这样的工具&#xff0c;数据包括从互联网上抓取的文本。对于像Lensa或Stable Diffusi…

C语言练习1(巩固提升)

C语言练习1 选择题 前言 “人生在勤&#xff0c;勤则不匮。”幸福不会从天降&#xff0c;美好生活靠劳动创造。全面建成小康社会的奋斗目标&#xff0c;为广大劳动群众指明了光明的未来&#xff1b;全面建成小康社会的历史任务&#xff0c;为广大劳动群众赋予了光荣的使命&…

让你对es有一个初步的了解

首先es在海量数据的搜索能力非常好&#xff0c;es你可以把他看成一个搜索引擎数据库&#xff0c;他是个非关系型数据库。他的语法有很大的不同&#xff0c;好像都是json风格的。还有一点需要说的就是es 的数据是存在硬盘上的&#xff0c; 我们先来看一下mysql和es的区别吧。一…

边写代码边学习之Bidirectional LSTM

1. 什么是Bidirectional LSTM 双向 LSTM (BiLSTM) 是一种主要用于自然语言处理的循环神经网络。 与标准 LSTM 不同&#xff0c;输入是双向流动的&#xff0c;并且它能够利用双方的信息。 它也是一个强大的工具&#xff0c;可以在序列的两个方向上对单词和短语之间的顺序依赖…

4H-SiC UMOSFET 结构中带有 p+-polySi/SiC 被屏蔽区的模拟研究

标题&#xff1a;Simulation Study of 4H-SiC UMOSFET Structure With p -polySi/SiC Shielded Region 摘要 在这篇论文中&#xff0c;我们提出了一种改进效率的4H-SiC U型沟槽栅MOSFET&#xff08;UMOSFET&#xff09;结构。所提出的器件结构利用ppolySi/SiC被屏蔽区来降低导…

学习Linux的注意事项(使用经验;目录作用;服务器注意事项)

本篇分享学习Linux过程中的一些经验 文章目录 1. Linux系统的使用经验2. Linux各目录的作用3. 服务器注意事项 1. Linux系统的使用经验 Linux严格区分大小写Linux中所有内容以文件形式保存&#xff0c;包括硬件&#xff0c;Linux是以管理文件的方式操作硬件 硬盘文件是/dev/s…

mybatis概述及搭建

目录 1.概述 2.mybatis搭建 1.创建一个maven项目&#xff0c;添加mybatis、mysql所依赖的jar 2.创建一个数据库表&#xff0c;及对应的java类 3.创建一个mybatis的核心配置文件&#xff0c;配置数据库连接信息&#xff0c;配置sql映射文件 4.创建sql映射文件&#xff0c;…

Matlab高光谱遥感数据处理与混合像元分解实践技术

光谱和图像是人们观察世界的两种方式&#xff0c;高光谱遥感通过“图谱合一”的技术创新将两者结合起来&#xff0c;大大提高了人们对客观世界的认知能力&#xff0c;本来在宽波段遥感中不可探测的物质&#xff0c;在高光谱遥感中能被探测。以高光谱遥感为核心&#xff0c;构建…

Mysql报错 mysqladmin flush-hosts

出现这个的原因是错误连接达到数据库设置的最大值。 此时需要释放重置连接最大值。 进入mysql使用命令 flush-hosts;环境说明&#xff1a; 内网测试服务器192.168.18.251 为WEB服务器&#xff0c;安装了mysql; 内网音视频转码服务器192.168.18.253安装了转码工具&#xff0…

IP协议报文结构

IP报文结构 4位版本号: 指定IP协议的版本, 对于IPv4来说, 就是4.4位头部长度: IP头部的长度是多少个32bit, 也就是 length * 4 的字节数. 4bit表示最大的数字是15, 因此IP头部最大长度是60字节.8位服务类型: 3位优先权字段(已经弃用) 4位TOS字段 1位保留字段(必须置为0). 4位…

【使用perf和火焰图分析PostgreSQL数据库的性能瓶颈】

Perf工具可用来对软件进行优化&#xff0c;包括算法优化&#xff08;空间复杂度、时间复杂度&#xff09;和代码优化&#xff08;提高执行速度、减少内存占用&#xff09;等等&#xff0c;perf 最常用的参数有top、stat、record&#xff0c;另外还有list和report等。 本文主要使…

枚举和反射

枚举 枚举 枚举是一种特殊的类&#xff0c;它可以有自己的属性、方法和构造方法。 两种枚举的方法 自定义枚举 a.将构造器私有化&#xff0c;防止外部直接new b.去掉set方法&#xff0c;防止属性被修改 c.在内部直接创建固定的对象 通过类名直接去访问 关键字枚举 用…