C++---string类

news2025/1/11 14:23:21


一.string类🍗

C++支持C风格的字符串,另外还提供了一种 字符串数据类型:
string是定义在头文件string中的类,使用前需要包含头文件string。
#include<string>

C语言中的字符串需要引用头文件#include<string.h>

#include<string.h>

值得注意的是,在c++中头文件中都没有.h


二.使用🍗

1.赋值的三种方法🍗

//C++风格
int main()
{
    string s1;//第一种方式,字符串赋值
    s1 = "hello c++";
    string s2 = "今天,好好学习了吗?";    //第二种方式,字符串初始化
    string s3{ "你学废了吗?"};           //第三种方式 ,用字符串构造string
    cout << s1 << endl;
    cout << s2 << endl;
    cout << s3 << endl;
    return 0;
}

  • ​​​第一种方式先定义了string变量s1,再为string变量s1赋值;
  • 第二种方式直接使用“ = ”为string变量s2赋值;
  • 第三种方式在定义string变量时,将初始值放在“{ }”运算符中,使用“{ }”运算符中的字符串为变量初始化;

2,关于字符串的各种操作🍗

1.访问字符串中的字符🍗
string类重载了“[]”运算符,可以通过索引方式访问和操作字符串中指定位置的字符。如下所示:

//string类重载了“[]”运算符,可以通过索引方式访问和操作字符串中指定位置的字符。如下所示:
//C++
int main()
{

	string s = "hello,C++";
	cout << s << endl;
	s[7] = 'P';//通过下标访问第七个元素
	s[8] = 'P';
	cout << s << endl; //hello,Cpp
	return 0;
}


//C语言
int main()
{
	char s[] = "hello,C++";
	printf("%s\n", s);
	s[7] = 'p';
	s[8] = 'p';
	printf("%s\n", s);
	return 0;
}

2.字符串连接🍗
在C语言中,连接两个字符串要调用strcat()函数,还要考虑内存溢出情况。在C++中,string重载了“ + ”运算符,可以使用“ + ”运算符连接两个string类型的字符串,如下所示:

//C++写法
int main()
{
	string s1, s2;
	s1 = "我在学习";
	s2 = "C++";
	cout << s1 + s2 << endl;     //我在学习C++

	return 0;
}


//C写法
int main()
{
	char s1[15] = "我在学习";
	char s2[15] = "C++";
	strcat(s1, s2);
	printf("%s", s1);
	return 0;
}

3.字符串的比较(注意比较的不是长度,而是字母的大小)🍗
在C语言中,比较两个字符串是否相等需要调用strcmp()函数,而在C++中,可以直接使用的“ > ”, “ < ”, “ == ”等运算符比较两个string字符串。如下所示:

//C++
int main()
{
    string s1, s2;
    s1 = "hello";
    s2 = "world";
    //比较两个字符串内容是否相同 
    if (s1 > s2)
        cout << "字符串s1大于s2" << endl;
    else if (s1 < s2)
        cout << "字符串s2大于s1" << endl;
    else
        cout << "字符串s1与s2相等" << endl;
}

//C语言
int main()
{

   char s1[10] = "hello";
   char s2[10] = "world";
    //比较两个字符串内容是否相同 
   if (strcmp(s1 ,s2)>0)
       printf("字符串s1大于s2");
   else if (strcmp(s1 , s2))
       printf("字符串s2大于s1");
   else
       printf("字符串s1与s2相等");
}

4.字符串的长度计算🍗
string类提供的length()函数用于获取字符串长度。length()函数类似于C语言中的strlen()函数。调用length()函数获取字符串长度, 如下所示:

int main()
{
    string s = "hello C++";
    cout << "长度:" << s.length() << endl;//9

    return 0;
}

5.字符串交换🍗
string类提供了成员函数swap(),用于交换两个字符串的值,示例代码如下所示:

int main()
{
	string s1 = "hello";
	string s2 = "world";
	
	cout << "交换前" << s1 << " " << s2 << endl;

	//s1.swap(s2); //交换s1与s2的内容
	swap(s1, s2);

	cout << "交换后" << s1 << " " << s2 << endl;
	
	return 0;
}

6.使用 getline() 函数来获取 string 输入🍗

int main()
{
	string s;
	getline(cin, s);
	cout << s;
	return 0;
}

7.erase() 进行元素删除操作🍗

int main()
{
    string str("Hello,World!!");
   
    str.erase(5, 6); // 下标为0开始 删除从索引位置 5 (包括第五个字符)开始的 6 个字符
    
    cout << "str为:" << str << endl;  //Hello!!

    return 0;
}

本篇完.🍗

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

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

相关文章

VRRP6协议--负载均衡配置

VRRP6负载均衡 VRRP6负载均衡指的是创建多个备份组,多个备份组同时承担数据转发的任务,对于每一个备份组,都有自己的Master和若干Backup设备。 VRRP6负载分担与VRRP6主备备份的基本原理和报文协商过程都是相同的。同样对于每一个VRRP6备份组,都包含一个Master设备和若干Ba…

《WebKit 技术内幕》学习之十四(2):调式机制

2 实践——基础和性能调试 Chromium开发者工具基本上沿用了Web Inspector的功能&#xff0c;所以这一节主要以该开发者工具作为介绍的对象&#xff0c;一起了解开发者工具提供的功能和一些基本的用法&#xff0c;有些用法其实在之前已经介绍过&#xff0c;这里可能为了系统性考…

Kettle-Docker部署+Sqlserver数据同步Mysql+Start定时任务

一. 背景介绍 1. ETL是什么 ETL&#xff08;Extract-Transform-Load&#xff09;&#xff0c;即数据抽取、转换、装载的过程。它是一种思想&#xff0c;主要是说&#xff0c;从不同的数据源获取数据&#xff0c;并通过对数据进行处理&#xff08;格式&#xff0c;协议等转换&a…

网安培训第一期——sql注入+文件

文章目录 sql inject报错注入time盲注联合查询万能密码拦截和过滤ascii注入流程base64查询的列名为mysql保留关键字key 文件上传ffuf脚本要做的三件事网络端口进程用户权限文件文件包含文件下载XSS跨站请求攻击csrf跨站请求伪造 sql inject 判断输入字段是字符串还是数字 方法…

ShardingSphere之ShardingJDBC客户端分库分表上

目录 什么是ShardingSphere&#xff1f; 客户端分库分表与服务端分库分表 ShardingJDBC客户端分库分表 ShardingProxy服务端分库分表 ShardingSphere实现分库分表的核心概念 ShardingJDBC实战 什么是ShardingSphere&#xff1f; ShardingSphere是一款起源于当当网内部的应…

拼图小游戏的界面和菜单的搭建

package Puzzlegame.com.wxj.ui;import javax.swing.*;public class GameJframe extends JFrame { //游戏主界面 public GameJframe(){//初始化界面initJFrame();//初始化菜单initJmenuBar();//让界面显示出来this.setVisible(true); }private void initJmenuBar() {//创建整个…

强化学习基础(一)

1 初始强化学习 强化学习是机器通过与环境交互来实现目标的一种计算方法。 机器和环境的一轮交互是指&#xff0c;机器在环境的一个状态下做一个动作决策&#xff0c;把这个动作作用到环境当中&#xff0c;这个环境发生相应的改变并且将相应的奖励反馈和下一轮状态传回机器 …

二叉树的构建,遍历等

1.叉树链式结构的实现 1.1前置说明 在学习二叉树的基本操作前&#xff0c;需先要创建一棵二叉树&#xff0c;然后才能学习其相关的基本操作。 为了方便调试&#xff0c;我直接在主函数中来建立二叉树了&#xff0c;下面是一个简单的二叉树 二叉树节点结构体的定义&#xff…

NC65中间件能启动,前端客户端启动失败,加载异常,卡住(org.owasp.esapi)

控制台输出错误 ESAPI.properties could not be loaded by any means. Fail.SecurityConfiguration class(org.owasp.esapi.reference.DefaultSecurityConfiguration) CTOR threw exception.效果图&#xff1a; 解决方案 添加如下参数&#xff1a; -Dorg.owasp.esapi.resou…

阿里云服务器ESC部署前后端分离项目完整流程

阿里云服务器ESC部署服务完整流程 准备安装软件1.安装jdk2.安装tomcat3.安装mysql 后端应用功能编写及部署编写一个简单的用户增删改查功能发布流程 前端功能应用及部署搭建前端框架准备&#xff1a;已安装npm 页面user.vueuserForm.vue 跨域问题安装nginx配置nginx 源码 准备 …

Maya的ai功能有哪些?Maya Assist是什么?

Autodesk Maya是一款流行的 3D 建模软件&#xff0c;艺术家和设计师使用它来创建现实的世界和表面。该软件以其与各种工具开发人员的合作而闻名&#xff0c;它允许多个工具的无缝集成以改进功能。Autodesk 的 Maya 刚刚发布了 Maya Assist&#xff0c;在 3D 建模和动画领域树立…

架构篇12:架构设计流程-评估和选择备选方案

文章目录 架构设计第 3 步:评估和选择备选方案评估和选择备选方案实战小结上一篇我们聊了设计备选方案,在完成备选方案设计后,如何挑选出最终的方案也是一个很大的挑战,主要原因有: 每个方案都是可行的,如果方案不可行就根本不应该作为备选方案。没有哪个方案是完美的。例…

MES系统计划排产功能,助你提升生产效率

MES系统的排产功能是基于企业的生产需求与资源情况进行制定的。首先&#xff0c;需要明确生产计划的目标和要求&#xff0c;包括计划产量、交货期限、生产能力等。然后&#xff0c;根据企业的生产资源情况&#xff0c;包括人员、设备、原材料等&#xff0c;制定生成计划。在MES…

Java链表(1)

&#x1f435;本篇文章将对单链表进行讲解&#xff0c;模拟实现单链表中常见的方法 一、什么是链表 链表是一种逻辑结构上连续而物理结构上不一定连续的线性表&#xff0c;链表由一个一个节点组成&#xff1a; 每一个节点中都由数据域&#xff08;val&#xff09;和指针域&…

食品加工厂可视化视频AI智能监管方案,助力工厂数字化运营

一、背景与需求分析 随着科技的不断进步和人们对食品安全和质量的日益关注&#xff0c;食品智慧工厂的建设成为了食品行业的一个重要趋势。智能化的食品工厂可以利用先进的技术和自动化系统&#xff0c;提高生产效率、降低监管成本&#xff0c;并确保产品的质量和安全。 行业…

使用GtkSharp下载zip包过慢问题解决方案

背景 安装GtkSharp这个包准备使用C#进行跨平台窗体应用程序开发&#xff0c;运行时发现其需要从github上下载【https://github.com/GtkSharp/Dependencies/raw/master/gtk-3.24.24.zip】这个依赖包&#xff0c;不知道是被墙了还是咋的&#xff0c;下载超时导致运行失败。 解决…

泛型..

1.泛型 所谓泛型 在类定义处是一种类型参数(我们平常所见到的参数指的就是方法中的参数 他接收有外界传递来的值 然后在方法中进行使用) 在类内部的话 则充当一种占位符 并且还提高了代码的复用率 何以见得提高了代码的复用率 其实就是通过对比使用了泛型技术和没有使用泛型技…

VS2019下各种报错合集(持续更新)

VS2019下的各种报错处理(长期更新)&#xff0c;欢迎大家在评论区补充错误代码/描述 解决方案&#xff01;&#xff01;&#xff01; 1、printf 代码运行到printf函数打印不出来内容&#xff0c;打断点之后&#xff0c;f10走过去&#xff0c;程序直接运行起来了&#xff0c;而…

Linux下串口編程遇到的接收数据错误及原因(

近日在调试串口的时候发现&#xff0c;另一设备向我ARM板的串口发送0x0d&#xff0c;我接收之后变成了0x0a&#xff0c;这是问题一&#xff1b;另外当对方向我发送一串数据&#xff0c;如果其中有0x11&#xff0c;那么我总是漏收此数&#xff0c;这是问题二。 由于问题莫名其妙…

深度视觉目标跟踪进展综述-论文笔记

中科大学报上的一篇综述&#xff0c;总结得很详细&#xff0c;整理了相关笔记。 1 引言 目标跟踪旨在基于初始帧中指定的感兴趣目标( 一般用矩形框表示) &#xff0c;在后续帧中对该目标进行持续的定位。 基于深度学习的跟踪算法&#xff0c;采用的框架包括相关滤波器、分类…