蓝桥杯-STL-string

目录

字符串定义

字符串初始化

字符串输入输出

字符串输出

字符串输入

字符串访问

字符串拷贝=

字符串拼接

直接相加

append(const char*str,int n)

字符串比较

​编辑字符串长度length()/size()

字符串查找find(string str)

查找子串substr(int a,int b)

字符串的大小写转换

大写转小写tolower(char a)

小写转大写toupper(char a)

ASCII


上篇介绍了STL中的迭代器和vector,这次来介绍C++在STL中加入的string类型,对字符串常用的需求功能进行了封装,使得操作起来方便。

使用时需要加上#include<string>头文件

字符串定义

定义时于定义其他变量是一样的

其他变量定义:

int a;

字符串变量定义:

string st;

字符串初始化

初始化时也与其他变量一样直接进行赋值就行

st="abcd";或者string st="abcd";

字符串输入输出

字符串输出

输出时可以直接用cout输出:

#include<iostream>
#include<string>
using namespace std;
int main()
{string a;a = "abcd";cout << a;return 0;
}

结果如下

字符串输入

在需要输入的时候,也可以直接用cin来输入

#include<iostream>
#include<string>
using namespace std;
int main()
{string a;cin >> a;cout<<a;return 0;
}

结果如下

字符串访问

字符串访问的时候于数组的访问是一样的可以用下标来访问

#include<iostream>
#include<string>
using namespace std;
int main()
{string a;cin >> a;cout << a[2];return 0;
}

字符串拷贝=

字符串复制,拷贝——与其他变量复制一样,直接赋值就行

#include<iostream>
#include<string>
using namespace std;
int main()
{string a,b;cin >> a;b = a;cout << "a=" << a << endl;cout << "b=" << b << endl;return 0;
}

结果如下

字符串拼接

将两个字符串接连在一起,可以使用直接相加的方式,或者使用append(const char*str,int n)函数

直接相加

代码示例:

#include<iostream>
#include<string>
using namespace std;
int main()
{string a,b,c;cin >> a >> b;c = a + b;cout << endl;cout << "a=" << a << endl;cout << "b=" << b << endl;cout << "c=" << c << endl;return 0;
}

运行结果

append(const char*str,int n)

append是封装在string里面的函数,用来拼接两个字符串,append()函数里面的形参有两个,

1)需要拼接的常量字符串;

2)需要拼接字符串的长度;

这两个参数,可以只写const char *str,   也可以两个都写,下面是具体的代码示例:

#include<iostream>
#include<string>
using namespace std;
int main()
{string a,b;a = "hello ";cout << "拼接前:"<<endl;cout << "a=" << a << endl;a = a.append("sheep", 2 );cout << "拼接后(将sheep的前两个字符拼接到a(hello )):" << endl;cout << "a=" << a << endl;cout << endl;b = "hello ";cout << "拼接前:" << endl;cout << "b=" << b << endl;b = b.append("sheep");cout << "拼接后(将sheep全部拼接到b(hello )):" << endl;cout << "b=" << b << endl;return 0;
}

运行结果如下:

字符串比较

字符串比较时,可以直接用==,!=,<,<=,>,>=比较大小,比较规则是ASCII码,从第一个字符逐字开始比较;

这写符号比较时:是真的返回1,否则返回0;具体示例如下:

#include<iostream>
#include<string>
using namespace std;
int main()
{string a, b,c;a = "abc";b = "abc";c = "acb";cout <<"(a == b )——" <<(a == b) << endl;//对于这个来说,a,c的比较先是第一个字符的比较,相等后,比较第二个字符 ,字符b的ascII码值大于c的ascii码值//就结束比较的符合a<=c;cout <<"(a <= c)——" << (a <= c) << endl;cout <<"(a >= c)——" <<(a >= c) << endl;return 0;}

运行结果如下

字符串长度length()/size()

获取字符串长度,通常用length()或者size(),都是获取字符串的实际长度,没有C语言里面的‘\0’

#include<iostream>
#include<string>
using namespace std;
int main()
{string a = "abcde";cout << a << endl;cout << "a.length()——" << a.length()<<endl;cout<<"a.size()——"<< a.size() << endl;return 0;
}

运行结果如下

字符串查找find(string str)

查找第一次出现的目标字符串通常运用find()函数,如果查找成功,则输出查找的第一个位置,否则返回-1;具体示例如下

#include<iostream>
#include<string>
using namespace std;
int main()
{string a = "abcdecd",b="cd";cout <<"查找abcdecd中的cd:——"<< a.find(b) << endl;cout <<"查找abcdecd中的ec:——" << a.find("ec") << endl;return 0;
}

运行结果如下

查找子串substr(int a,int b)

一般是查找当前字符串的子串,用substr(),substr()可以用两个参数,也可以用一个参数

substr(a,b)——一般是从a下标到b下标的子字符串

substr(a)——一般是从a下标到结尾的子字符串

#include<iostream>
#include<string>
using namespace std;
int main()
{string a = "abcdecd";cout << a<<endl<<endl;cout << "a.substr(2, 5)——"<<a.substr(2, 5) << endl;cout <<"a.substr(5)——"<< a.substr(5) << endl;cout << "a.substr(0,5)——"<<a.substr(0, 5);return 0;
}

字符串的大小写转换

大写转小写tolower(char a)

tolower(char a)只能对单个字符进行转换,转换完后记得强转---另外对小写字母自动跳过

#include<iostream>
#include<string>
using namespace std;
int main()
{string a = "ABCDE";cout << a << endl;for (int i = 0; i < a.size(); i++){cout <<(char) tolower(a[i]);}return 0;
}

小写转大写toupper(char a)

toupper(char a)只能对单个字符进行转换,转换完后记得强转---另外对大写字母自动跳过

#include<iostream>
#include<string>
using namespace std;
int main()
{string a = "abcdA";cout << a << endl;for (int i = 0; i < a.size(); i++){cout <<(char) toupper(a[i]);}return 0;
}

ASCII

大写字母比小写字母小——32

字符数字和整形数字相差——48


#include<iostream>
using namespace std;
int main()
{cout << "A——"<<(int)'A' << endl;cout << "Z——" << (int)'Z' << endl;cout << "a——" << (int)'a' << endl;cout << "z——" << (int)'z' << endl;cout << "a-A——" << (int)'a' - 'A' << endl;cout << "0——" << (int)'0' << endl;cout << "'1'-48——"<<'1' - 48 << endl;return 0;
}

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

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

相关文章

秋招数据库学习2(20240408-20240412共10道)

由于感觉数据库难度可能暂时面试用不到&#xff0c;就先不刷啦 20240408 1.从不订购的客户 SELECT Name AS Customers FROM Customers C LEFT JOIN Orders O ON C.Id O.CustomerId WHERE CustomerId is nullselect customers.name as Customers from Customers wher…

手写ArrrayList

需求 自定义的MyArrayList import java.util.Arrays; import java.util.Objects;public class MyArrayList<E> {private Object[] elementData ; // 存储元素的数组private int size; // 记录 的元素个数private static final int DEFAULT_CAPACITY 10; // 默认容量// …

Eigen笔记2:矩阵拼接

直接贴代码吧&#xff0c;使用的MatrixXd 和<<运算符&#xff1a; int main(int argc, char *argv[]) {Eigen::MatrixXd B(2, 2);B << 1, 2,3, 4;Eigen::MatrixXd C(2, 2);C << 5, 6,7, 8;Eigen::MatrixXd D(2, 2);D << 9, 10,11, 12;Eigen::MatrixXd…

基于React封装Handsontable并兼容antd

背景 其实Handsontable官方也提供了React的版本&#xff0c;但是官方的版本再编辑和渲染的时候并不能够很好的嵌入第三方的组件库。这就导致了&#xff0c;使用了Handsontable就没有办和普通的react项目一样轻松引用其他第三方组件。因此对其react的版本进行了二次的封装&#…

Django中间件路由映射自动加/斜杠问题原因及分析

输入 http://127.0.0.1:8000/main/index/ 输入 http://127.0.0.1:8000/main/index 路由定义情况 urlpatterns [path("index/", views.index) ]可以发现我在输入URL的index路由时&#xff0c;如果没有和Django定义的路由匹配规则一样的话&#xff0c;浏览器自…

Vim:强大的文本编辑器

文章目录 Vim&#xff1a;强大的文本编辑器Vim的模式命令模式常用操作光标移动文本编辑查找和替换 底行命令模式常用操作Vim的多窗口操作批量注释与去注释Vim插件推荐&#xff1a;vimforcpp结论 Vim&#xff1a;强大的文本编辑器 Vim&#xff0c;代表 Vi IMproved&#xff0c;…

如何确保软件通过SmartScreen验证,消除用户下载时的警告提示?

在当前的网络时代&#xff0c;各种软件应用程序深深渗透到人们的日常生活和工作中&#xff0c;许多企业选择自行开发应用程序以推进其业务发展。但在发布应用程序后&#xff0c;软件所有者经常会遇到一个挑战&#xff0c;即用户在下载时可能会遇到微软SmartScreen提示“此应用程…

探索HTTP协议的世界 | 从基础到高级应用,原理与实践相结合(请求篇)

从基础到高级应用&#xff0c;原理与实践相结合 什么是Http历代Http协议主要特点格式和URL协议内容请求行格式如下请求方法简单案例 消息报头报头域的格式HTTP消息报头类型普通报头优化方向报头&#xff08;缓存&#xff09;Cache-Control的选项其他相关的缓存报头 请求报头Acc…

Unity TMP Inputfield 输入框 框选 富文本 获取真实定位

一、带富文本标签的框选是什么 UGUI的InputField提供了selectionAnchorPosition和selectionFocusPosition&#xff0c;开始选择时的光标下标和当前光标下标 对于未添加富文本标签时&#xff0c;直接通过以上两个值&#xff0c;判断一下框选方向&#xff08;前向后/后向前&…

C#Winform使用扩展方法自定义富文本框(RichTextBox)字体颜色

实现效果 调用方法 rtxtLog.AppendTextColorful(richTextBox1,DateTime.Now.ToString(), Color.Red); 完整代码如下 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using Sys…

【U8+】用友固定资产卡片拆分提示:未设置对象变量或With block变量。

【问题描述】 用友U8软件中&#xff0c; 操作固定资产模块&#xff0c;针对资产进行卡片拆分的时候&#xff0c; 提示&#xff1a;未设置对象变量或With block变量。 确定后仍然能打开卡片拆分界面&#xff0c;但是界面显示异常看不到拆分明细信息&#xff0c;并且保存后拆分结…

【Qt-Qt Creator使用技巧】

工具-Qt Creator ■ 使用技巧■ 定义触发片段■ Qt Creator 行编辑■ 代码注释■ 代码补全■ 快速给函数添加定义■ 创建书签■ 同步列输入■ 局部替换■ 源代码阅读■ 源码调试■ 使用技巧 ■ 定义触发片段 ■ Qt Creator 行编辑 shift + alt + up / down来获得多个游标。 …

导入芯片原厂SDK Mirror源码到gerrit

下载镜像代码 repo init --mirror --repo-url ssh://xx/repo.git -u ssh://xx/manifests.git -m manifest.xml repo sync 创建AOSP project 对All Project权限修改 创建repo 在刚才下载的codebase根目录执行如下命令&#xff1a; repo forall -c echo $REPO_PROJECT; ssh -p 29…

DOTS Instancing合批:如何针对单个渲染实体修改材质参数

最近在做DOTS的教程,由于DOTS(版本1.0.16)目前不支持角色的骨骼动画&#xff0c;我们是将角色的所有动画数据Baker到一个纹理里面&#xff0c;通过修改材质中的参数AnimBegin,AnimEnd来决定动画播放的起点和终点&#xff0c;材质参数AnimTime记录当前过去的动画时间。但是在做大…

CSS导读 (元素显示模式 下)

&#xff08;大家好&#xff0c;今天我们将继续来学习CSS的相关知识&#xff0c;大家可以在评论区进行互动答疑哦~加油&#xff01;&#x1f495;&#xff09; 目录 3.6 元素显示模式转换 3.7 (一个小技巧)单行文字垂直居中的代码 3.8 单行文字垂直居中的原理 3.9 小案例…

leaflet知识点:地图窗格panes的应用

一&#xff0c;需求背景 地图中存在无人机&#xff0c;停机坪&#xff0c;航线三个图层&#xff0c;需要实现无人机图层显示在最上面&#xff0c;停机坪图层显示在最下面&#xff0c;航线图层显示在中间。 二&#xff0c;遇到问题 由下图可知航线图层所在overlayPane窗格的z-…

工控 modbusTCP 报文

Tx 发送报文:00 C9 00 00 00 06 01 03 00 00 00 02 Rx 接收报文:00 C9 00 00 00 07 01 03 04 01 4D 00 01 Tx 发送报文:00 C9 00 00 00 06 01 03 00 00 00 02 00 C9 事务处理标识符 2字节 00 00 协议标识符 2字节 固定 00 00 00 06 长度 2字节 表示之后的字节总数 &#xff08;…

大数据之ClickHouse

大数据之ClickHouse 简介 ClickHouse是一种列式数据库管理系统&#xff0c;专门用于高性能数据分析和数据仓库应用。它是一个开源的数据库系统&#xff0c;最初由俄罗斯搜索引擎公司Yandex开发&#xff0c;用于满足大规模数据分析和报告的需求。 特点 开源的列式存储数据库…

elementUI 下拉框加提示文案

效果如下&#xff1a; 展示文案在最下面&#xff0c;跟选项有个分割线 <el-select v-model"value" placeholder"请选择" clearable popper-class"addNotice" class"addNoticeS" visible-change"(v) >selectNotice(v,展示…

Testng测试框架(7)--测试运行

忽略测试 TestNG可以让你忽略类、特殊包、包及其子中的所有Test方法。 当在测试方法级别使用Ignore 注解&#xff0c;在功能上与Test(enabledfalse).一样。 以下例子将忽略类中所有tests。 import org.testng.annotations.Ignore; import org.testng.annotations.Test; Ign…