蓝桥杯-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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

家居网购项目(三)

文章目录 1.后台管理—添加家居1.需求分析2.程序框架图3.修改FurnDao添加方法add 4.修改FurnDaoImpl添加方法add 5.单元测试FurnDaoTest.java 6.修改FurnService添加方法add 7.修改FurnServiceImpl添加方法add 8.单元测试FurnServiceTest.java 9.修改furn_add.jsp10.修改FurnSe…

用于扩展Qt自身的插件(下)

扩展Qt自身的插件 引言必须满足项创建插件示例代码生成插件配置加载插件的环境创建使用插件的项目配置库和头文件依赖的步骤:应用程序代码运行结果总结引言 本文继上篇的扩展Qt自身的插件,接着记录Qt自身的插件,只不过本文提及的用于扩展Qt自身的插件是可以在QtCreator的设…

读《AI营销画布》客户关系维护的当代挑战(二)

前言 技术进步、用户连接与信息冗余这三股力量已经让人无法真正高质量的获取有用的信息&#xff0c;在对进步与高质量前面提出解决方案时&#xff0c;我们需要对挑战清楚的认识&#xff0c;所以&#xff0c;今天就这三个也解读一下。 1.信息泛滥与爆炸 如图还是19年的&#xf…

股票价格预测 | Python使用GAN预测股票价格

文章目录 效果一览文章概述代码设计效果一览 文章概述 生成对抗网络(GAN)是一种强大的机器学习模型,用于生成以假乱真的数据。然而,使用GAN来预测股票价格可能会面临以下挑战: 数据可用性:GAN需要大量的数据进行训练,以便生成准确的输出。对于股票价格预测,历史股票价…

基于单片机的智能居家火灾报警系统

摘要:采用STC15L2K32单片机设计了一种智能火灾报警系统,它是控制中心与多个不同功能的探测模块构成,实现了一个中心、多点辐射的火灾检测和报警功能。 关键词:智能居家,火灾报警系统,单片机,模块化设计。 0 引言 近些年电子技术、计算机技术为火灾报警系统和灭火系统在…

Python实现PDF页面的删除与添加

在处理PDF文档的过程中&#xff0c;我们时常会需要对PDF文档中的页面进行编辑操作的情况&#xff0c;如插入和删除页面。通过添加和删除PDF页面&#xff0c;我们可以增加内容或对不需要的内容进行删除&#xff0c;使文档内容更符合需求。而通过Python实现PDF文档中的插入和删除…

明明设置数字居中对齐,为什么excel的数字却不居中?

有时候在excel里&#xff0c;选中数据&#xff0c;设置对齐方式 左右居中&#xff0c;然而&#xff0c;数字却怎么都不居中&#xff0c;为什么呢&#xff1f; 1.按快捷键Ctrl1&#xff0c;打开单元格自定义格式对话框&#xff0c;看到是初始界面是在数字的会计专用&#xff0c;…

TDengine too many open files

too many open files 是比较常见的报错&#xff0c;尤其使用TDengine 3.0 集群时&#xff0c;大概率会遇到。这个报错很简单&#xff0c;但要想顺利解决&#xff0c;却涉及到很多知识点。 目录 知识点&#xff1a;fs.nr_open知识点&#xff1a;file-max & fs.file-nr知识点…

VSCode中 task.json 和 launch.json 的作用和参数解释以及配置教程

前言 由于 VS Code 并不是一个传统意义上的 IDE&#xff0c;所以初学者可能在使用过程中会有很多的疑惑&#xff0c;其中比较常见的一个问题就是 tasks.json和 launch.json两个文件分别有什么作用以及如何配置 tasks.json VSCode 官网提供的 tasks.json 配置教程 使用不同的…

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

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

CLIP大模型图文检索——原理解读及代码实现

一. 核心思想 通过自然语言处理获得的监督信号可用于训练迁移效果出色的视觉模型。本论文的作者团队构建了一个庞大的图像文本配对数据集&#xff0c;其中包含400 million个图片文本的配对。利用最大规模的ViT-large模型&#xff0c;他们提出了CLIP&#xff08;Contrastive La…

Day38 代码随想录(1刷)动态规划

目录 343. 整数拆分 96. 不同的二叉搜索树 343. 整数拆分 给定一个正整数 n &#xff0c;将其拆分为 k 个 正整数 的和&#xff08; k > 2 &#xff09;&#xff0c;并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输入: n 2 输出: 1 解释: 2 1 1, 1…

SQLite 在Android安装与定制方案(十七)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLite超详细的编译时选项&#xff08;十六&#xff09; 下一篇&#xff1a;SQLite Android 绑定&#xff08;十八&#xff09; 安装 有三种方法可以将 SQLite Android 绑定添加到应用程序&#xff1a; 1、通过…

迭代器模式:统一访问集合元素的优雅方式

在面向对象的软件开发中&#xff0c;迭代器模式是一种行为型设计模式&#xff0c;它提供了一种方法来顺序访问一个聚合对象中的各个元素&#xff0c;而又无需暴露该对象的内部表示。这种模式是集合处理特别是遍历集合的核心机制。本文将详细介绍迭代器模式的定义、实现、应用场…

《零基础入行IT:步步为营的转型攻略与实践策略》

在信息化社会&#xff0c;IT行业以其强劲的发展势头、广阔的就业前景和丰厚的薪酬待遇&#xff0c;吸引了无数希望转行或初入职场人士的目光。然而&#xff0c;对于毫无相关背景知识的人来说&#xff0c;如何成功叩开IT行业的大门&#xff0c;似乎是一项颇具挑战性的任务。本文…

element-ui的年份范围选择器,选择的年份需等于或小于当前年份,选择的年份范围必须在三年之内

写在前面 日期限制处理&#xff08;禁用&#xff09;&#xff0c;下面我以我这边的需求为例&#xff0c; 选择的年份需等于或小于当前年份 选择的年份范围必须在三年之内 1.限制起始日期小于截止日期 1&#xff09;根据用户选中的开始日期&#xff0c;置灰不可选的日期范围&…

[RK3399 Linux] 使用ubuntu 20.04.5制作rootfs

一、ubuntu base ubuntu base是用于为特定需求创建自定义映像的最小rootfs,是ubuntu可以运行的最小环境。 1.1 下载源码 下载ubuntu-base的方式有很多,可以从官方的地址:ttp://cdimage.ubuntu.com/ubuntu-base/releases。 也可以其它镜像地址下载,如清华源:https://mi…

【小技巧】机器学习中可视化高维向量的两种方法PCA和t-SNE,以及其原理介绍和代码示例(附代码)

使用情景&#xff1a;比如说现在我有一批numpy的多维向量&#xff0c;比如说都是256维度的&#xff0c;X.shape(n, 256), 已知它们都是经过训练能够在256dim的超球面上实现分类或聚类的&#xff0c;现在我想把它们可视化出来看看各个簇在超球面上的分布是怎样的&#xff1f; 1…

Ollama、FastGPT大模型RAG结合使用案例

参考: https://ollama.com/download/linux https://doc.fastai.site/docs/intro/ https://blog.csdn.net/m0_71142057/article/details/136738997 https://doc.fastgpt.run/docs/development/custom-models/m3e/ Ollama作为后端大模型加载运行 FastGPT作为前端页面聊天集成RA…

【TI毫米波雷达】I2C初始化配置和主机数据收发,用SDA来模拟UART数据输出,可直接连接IWR6843AOP开发板引脚

【TI毫米波雷达】I2C初始化配置和主机数据收发&#xff0c;用SDA来模拟UART数据输出&#xff0c;可直接连接IWR6843AOP开发板引脚 文章目录 导入库引脚复用初始化I2C配置数据发送用SDA来模拟UART数据输出附录&#xff1a;结构框架雷达基本原理叙述雷达天线排列位置芯片框架Demo…