当前位置: 首页 > news >正文

C++---string类


一.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{ "你学废了吗?"};           //第三种方式 ,用字符串构造stringcout << 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,Cppreturn 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;elsecout << "字符串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");elseprintf("字符串s1与s2相等");
}

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

int main()
{string s = "hello C++";cout << "长度:" << s.length() << endl;//9return 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;
}

本篇完.🍗

相关文章:

  • Cinder组件作用
  • HarmonyOS鸿蒙学习基础篇 - 项目目录和文件介绍
  • 计算机基础之总线与I/O总线
  • [Linux] Ubuntu install Miniconda
  • Broadcom交换芯片56620架构
  • 嵌入式Linux:如何进行嵌入式Linux开发?
  • 目标检测YOLO实战应用案例100讲-橘子自动采摘机视觉识别
  • R语言——AVOCADO“(异常植被变化检测)算法(1990-2015数据分析)监测森林干扰和再生(含GEE影像下载代码)
  • 甜蜜而简洁——深入了解Pytest插件pytest-sugar
  • Matplotlib Mastery: 从基础到高级的数据可视化指南【第30篇—python:数据可视化】
  • React16源码: React中的updateHostRoot的源码实现
  • 【Docker】安装Nginx容器并部署前后端分离项目
  • neovim compare 2 files
  • Spring Boot入门
  • chapter1-爬虫那些事
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • android 一些 utils
  • Android单元测试 - 几个重要问题
  • android图片蒙层
  • CSS实用技巧干货
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • Fabric架构演变之路
  • HTTP中GET与POST的区别 99%的错误认识
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • Lsb图片隐写
  • mysql 数据库四种事务隔离级别
  • NSTimer学习笔记
  • React+TypeScript入门
  • Redash本地开发环境搭建
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • Spring核心 Bean的高级装配
  • SQLServer插入数据
  • TCP拥塞控制
  • 测试如何在敏捷团队中工作?
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 前端之Sass/Scss实战笔记
  • 微信小程序开发问题汇总
  • 学习Vue.js的五个小例子
  • elasticsearch-head插件安装
  • Linux权限管理(week1_day5)--技术流ken
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • # Java NIO(一)FileChannel
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .htaccess 强制https 单独排除某个目录
  • .net Application的目录