蓝桥杯-STL-string

目录

字符串定义

字符串初始化

字符串输入输出

字符串输出

字符串输入

字符串访问

字符串拷贝=

字符串拼接

直接相加

[append(const char*str,int n)](#append(const char*str,int n))

字符串比较

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

[字符串查找find(string str)](#字符串查找find(string str))

[查找子串substr(int a,int b)](#查找子串substr(int a,int b))

字符串的大小写转换

[大写转小写tolower(char a)](#大写转小写tolower(char a))

[小写转大写toupper(char a)](#小写转大写toupper(char a))

ASCII


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

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

字符串定义

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

其他变量定义:

int a;

字符串变量定义:

string st;

字符串初始化

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

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

字符串输入输出

字符串输出

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

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

结果如下

字符串输入

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

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

结果如下

字符串访问

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

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

字符串拷贝=

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

cpp 复制代码
#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)函数

直接相加

代码示例:

cpp 复制代码
#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, 也可以两个都写,下面是具体的代码示例:

cpp 复制代码
#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;具体示例如下:

cpp 复制代码
#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'

cpp 复制代码
#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;具体示例如下

cpp 复制代码
#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下标到结尾的子字符串

cpp 复制代码
#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)只能对单个字符进行转换 ,转换完后记得强转---另外对小写字母自动跳过

cpp 复制代码
#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)只能对单个字符进行转换 ,转换完后记得强转---另外对大写字母自动跳过

cpp 复制代码
#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

cpp 复制代码
#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;
}
相关推荐
小字节,大梦想29 分钟前
【C++】二叉搜索树
数据结构·c++
吾名招财30 分钟前
yolov5-7.0模型DNN加载函数及参数详解(重要)
c++·人工智能·yolo·dnn
我是哈哈hh1 小时前
专题十_穷举vs暴搜vs深搜vs回溯vs剪枝_二叉树的深度优先搜索_算法专题详细总结
服务器·数据结构·c++·算法·机器学习·深度优先·剪枝
憧憬成为原神糕手1 小时前
c++_ 多态
开发语言·c++
郭二哈1 小时前
C++——模板进阶、继承
java·服务器·c++
挥剑决浮云 -1 小时前
Linux 之 安装软件、GCC编译器、Linux 操作系统基础
linux·服务器·c语言·c++·经验分享·笔记
丶Darling.1 小时前
LeetCode Hot100 | Day1 | 二叉树:二叉树的直径
数据结构·c++·学习·算法·leetcode·二叉树
labuladuo5202 小时前
Codeforces Round 977 (Div. 2) C2 Adjust The Presentation (Hard Version)(思维,set)
数据结构·c++·算法
小柯J桑_2 小时前
C++:STL简介
c++·stl
咖啡里的茶i2 小时前
C++之继承
c++