蓝桥杯-STL-string

news2025/1/12 23:16:07

目录

字符串定义

字符串初始化

字符串输入输出

字符串输出

字符串输入

字符串访问

字符串拷贝=

字符串拼接

直接相加

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.coloradmin.cn/o/1590692.html

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

相关文章

webpack-loader的使用

引入css后执行打包命令 "build": "npx webpack --config wk.config.js"发现报错&#xff1a; webpack默认只能处理js其他的像css,图片都需要借助loader来处理 css-loader loader可以用于对模块的源代码进行转换&#xff0c;可以把css看成一个模块&…

Transformer模型-decoder解码器,target mask目标掩码的简明介绍

今天介绍transformer模型的decoder解码器&#xff0c;target mask目标掩码 背景 解码器层是对前面文章中提到的子层的包装器。它接受位置嵌入的目标序列&#xff0c;并将它们通过带掩码的多头注意力机制传递。使用掩码是为了防止解码器查看序列中的下一个标记。它迫使模型仅使用…

【高效开发工具系列】obsutil安装与使用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

广州图创 图书馆集群管理系统 updOpuserPw SQL注入漏洞复现

0x01 产品简介 广州图创计算机软件开发有限公司是集产品研发、应用集成、客户服务为一体的高新技术企业,主要目标是为图书馆行业用户提供高质量的应用软件系统设计、集成和维护服务。 0x02 漏洞概述 由于广州图创 图书馆集群管理系统 updOpuserPw 接口处未对用户输入的SQL语…

minio-docker单节点部署SDK测试文件上传下载

目录 一&#xff0c;docker部署minio单节点单磁盘 二&#xff0c;SDK测试上传下载 一&#xff0c;docker部署minio单节点单磁盘 1.拉取镜像 # 下载镜像 docker pull minio/minio 2.查看镜像 docker images 3.启动minio(新版本) 创建本机上的挂载目录&#xff0c;这个可以…

鸿蒙OS开发学习:【第三方库调用】

介绍 本篇Codelab主要向开发者展示了在Stage模型中&#xff0c;如何调用已经上架到[三方库中心]的社区库和项目内创建的本地库。效果图如下&#xff1a; 相关概念 [Navigation]&#xff1a;一般作为Page页面的根容器&#xff0c;通过属性设置来展示页面的标题、工具栏、菜单。…

【AIGC】本地部署通义千问 1.5 (PyTorch)

今天想分享一下 Qwen 1.5 官方用例的二次封装&#xff08; huggingface 说明页也有提供源码&#xff09;&#xff0c;其实没有太多的技术含量。主要是想记录一下如何从零开始在不使用第三方工具的前提下&#xff0c;以纯代码的方式本地部署一套大模型&#xff0c;相信这对于技术…

50. QT/QML中创建多线程的方式汇总

1. 说明 在QT / QML中创建线程主要有三种方式。第一种:在定义类时继承 QThread 这个类,然后重写父类的虚函数 run(),将子线程需要执行的业务代码放到 run() 函数当中即可。**注意:**这种方式官方已经摒弃了。第二种:使用moveToThread()函数将需要在子线程中执行的函数类移…

软件设计师-基础知识科目-标准化与软件知识产权基本知识11

十一、标准化与软件知识产权基本知识&#xff1a; 知识产权&#xff1a; 主要包括&#xff1a;著作权及邻接权、专利权、工业品外观设计权、商标权、地理标志权、继承电路布图设计权。邻接权是指与著作权相邻近的权利&#xff0c;是指作品传播者&#xff0c;对其传播作品过程…

文献速递:深度学习肝脏肿瘤诊断---基于多相增强 CT 和临床数据的恶性肝肿瘤鉴别诊断深度学习

Title 题目 Deep learning for diferential diagnosisof malignant hepatic tumors based on multi-phase contrast-enhanced CT and clinical data 基于多相增强 CT 和临床数据的恶性肝肿瘤鉴别诊断深度学习 Abstract 摘要 Liver cancer remains the leading cause of can…

中介者模式:简化对象间通信的协调者

在面向对象的软件开发中&#xff0c;中介者模式是一种重要的行为型设计模式&#xff0c;用于降低多个对象间通信的复杂性。通过提供一个中心化的对象来处理不同组件之间的交互&#xff0c;中介者模式使得组件间不必显式引用彼此&#xff0c;从而使其松散耦合、更易于维护。本文…

ElasticSearch中使用bge-large-zh-v1.5进行向量检索(一)

一、准备 系统&#xff1a;MacOS 14.3.1 ElasticSearch&#xff1a;8.13.2 Kibana&#xff1a;8.13.2 BGE是一个常见的文本转向量的模型&#xff0c;在很多大模型RAG应用中常常能见到&#xff0c;但是ElasticSearch中默认没有。BGE模型有很多版本&#xff0c;本次采用的是bg…

享元模式:优化资源利用的高效策略

在面向对象的软件开发中&#xff0c;享元模式是一种结构型设计模式&#xff0c;旨在减少内存使用&#xff0c;通过共享尽可能多的相似对象来提高应用程序的效率。本文将详细介绍享元模式的定义、实现、应用场景以及优缺点。 1. 享元模式的定义 享元模式&#xff08;Flyweigh…

手写一个简单的 OrbitControls 轨道控制器

手写一个简单的 OrbitControls 轨道控制器 相信使用过THREE.JS的同学&#xff0c;都知道 OrbitControls 这个的轨道控制器&#xff0c;他是绕着一个观察点&#xff0c;来进行什么什么的… 反正就是那么个意思。 所以很明显OrbitControls的运动轨迹是一个球体&#xff0c;他是绕…

软件定义车队面临网络安全的曲折之路

当以色列 REE Automotive 设计其 P7 电动汽车底盘时&#xff0c;它是从软件开始工作的&#xff1a;扁平的车辆底盘完全可配置&#xff0c;每个轮胎附近有四个独立的模块&#xff0c;用于转向、制动、悬架和动力传动系统&#xff0c;每个模块均由电子驱动控制单元&#xff08;EC…

JavaEE初阶——多线程(二)

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 小比特 大梦想 此篇文章延续上一篇文章,与大家分享Thread常见的方法以及线程的状态相关知识 其他内容我们下一篇再见! 如果有错误或不足请您指出!!! 目录 3.Thread类及常见方法3.1Thread常见的构造方法3.2Thread…

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

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

C++的stack和queue类(三):适配所有容器的反向迭代器

目录 前言 list的反向迭代器 list.h文件 ReverseIterator.h文件 test.cpp文件 前言 迭代器按性质分类&#xff1a; 单向&#xff1a;forward_list双向&#xff1a;list随机&#xff1a;vector / deque 迭代器按功能分类&#xff1a; 正向反向const list的反向迭代器…

抽象工厂模式:深入探索面向对象设计的多样性

在软件开发中&#xff0c;正确地应用设计模式对于构建可扩展、可维护和高效的系统至关重要。抽象工厂模式作为创建型设计模式之一&#xff0c;提供了一个高层接口&#xff0c;用于创建一系列相关或依赖对象&#xff0c;而无需指定它们具体的类。本文将详细介绍抽象工厂模式的概…

【虚幻引擎】DTProjectSettings 蓝图获取基本项目配置插件使用说明 获取项目命名,项目版本,公司名,公司识别名,主页,联系方式

本插件可以使用蓝图获取到项目的一些基本配置&#xff0c;如获取&#xff1a;公司名、公司识别名、版权声明、描述、主页、许可条款、隐私政策、项目ID、项目命名、项目版本、支持联系方式、项目显示标题、项目调试标题信息、应保留窗口宽高比、使用无边框窗口、以VR启动、允许…