23-24C++(46)——字符串string+ getline(cin, s)+a.length()+a.substr(x, y)+a.find(b)+a.rfind(b)

一、字符与字符串

1、字符:用单引号括起来的单个字符,  

如'a'、'_',对应的数据类型是 char。

2、字符串:用双引号括起来的任意多个字符,   

 如"abc"、"a" 、""、" ",对应的数据类型是 const char [ ],可以保存在字符串 string 类型中,也可以保存在 char 数组中。用 string 类型更方便。

注意:

字符和字符串是不同的类型,不能用赋值号(=)互相赋值。

例如:char a; string b; 其中变量 a 是字符类型,变量 b 是字符串类型。这两者之间的类型不相同,不能有类似于 b=a 或者 a=b 这类型的操作。

二、字符串 string

1、头文件:

要想使用 string 类型,必须在#include<iostream>下面加一行#include <string>

2、字符串的基础操作

(1)定义变量     

         string a; //这时 a 的值是空字符串""

(2)在定义变量时初始化   

          string a="ABC"; //这时 a 的值是"ABC"     

          也可以 string a("ABC");

(3)对已经定义过的变量进行赋值

          string a; a="ABC"; //这时 a 的值是"ABC"

(4)输入字符串     

          string a; cin>>a; //a 的值由输入决定

说明:cin 只能输入一个不带空格、'\t'、'\n'的字符串,即以空格、'\t'、'\n'作为字符串输入 的结束标记。

例如:cin>>a 时如果键盘输入 ab cde,其中 b 和 c 之间有一个空格,那么 a 的值为"ab"。

(5)输入一个可能带空格(以及'\t'的字符串)    

 string a;  getline(cin, s); //把一整行的输入赋给 a

说明:

getline 输入以'\n'作为字符串输入的结束标记

例如:

getline(cin, s)时如果键盘输入 ab cde,那么 a 的值为"ab cde"。

(6)把一个字符串的值赋给另一个   

 string a="ABC"; string b; b=a; //这时 b 的值是"ABC"

(7)输出字符串   

 string a="ABC"; cout<<a; //这时屏幕显示的是 ABC

(8)输出字符串中的某个字符   

 string a="ABC"; cout<<a[1]; //这时屏幕显示的是 B

(9)把字符串中的某个字符赋值给一个 char 类型变量  

   string a="ABC"; char b; b=a[0]; //这时 b 的值是'A'

(10)把字符串中的某个字符值进行修改   

 string a="ABC"; a[1]='C'; //这时 a 的值是"ACC"

(11)字符串长度

定义:字符串中字符的个数。 例如"ABC123"的长度是 6。 字符串 a 的长度:a.length()

【例 1】输入一个字符串,输出其中下标为 0、2、3 的三个字符,不要隔空格,不要换行。

例如

当输入 ABCDE 时,应输出 ACD。

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

【例 2】输入一个字符串,输出该字符串的长度。

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

运行结果如下——

【例 3】输入两个字符串,输出其中较大的那个。

比较规则:先比较下标 0 的字符,如果 ASCII 码不同,则大小已定;否则继续比较下标 1 的 字符,…,直到比出大小为止。例如"ABC"比"AAA"大,"ABC"比"abc"小,"ABCD"比"ABC"大, "ABC"和"ABC"相等。

代码中可以用>、=、<=、!=来比较字符串大小。

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

【例 4】输入一个字符串,输出其中的大写字符。

例如输入 AB53CdAAf,则应输出 ABCAA。

可以根据下标来访问字符串 a 中的某一个字符,下标的合法范围从 0 到 a.length()-1。例如 string a="ABCDE",因为字符串 a 的长度为 5,所以从 a[0]到 a[4]都分别对应一个字符。

代码中可以利用循环语句,循环自变量从 0 循环到长度-1,在循环中把 i 当作下标使用。

#include<iostream>
#include<string>
using namespace std;
int main()
{
	string a;
	cin >> a;
	for (int i = 0; i < a.length(); i++)
	{
		if (a[i] >= 'A' && a[i] <= 'Z')
		{
			cout << a[i];
		}
	}
	return 0;
}

 【例 5】字符串连接 可以使用“+”把字符串和字符串连在一起,返回一个更长的字符串。

字符串也可以和字符连在一起,字符也可以和字符串连在一起。

#include<iostream>
#include<string>
using namespace std;
int main()
{
	string a = "abcd";
	string b = "efg";
	char c = 'h';
	string s = a + b; //abcdefg
	string t = b + c; //efgh
	string u = c + b; //hefg
	string v = a + b + c; //abcdefgh
	return 0;
}

【例 6】取子串

字符串中的一小段称为子串。使用 substr 函数进行取子串操作。 例如,string a="ABCDEFG",

那么 a.substr(x, y)返回一个字符串,表示从 a 下标为 x 的字符开始,取连续 y 个字符构成的字符串;

a.substr(z)返回一个字符串,表示从 a 下标为 z 的字 符开始,直到结束为止构成的字符串。

故 a.substr(3, 2)返回"DE",a.substr(3)返回"DEFG"

【例 7】寻找子串的位置 搜索一个字符串是否是另一个字符串的子串。

如果是,返回第一次出现位置的下标;如果不是,返回-1。

string a = "abcdefgh";
string b = "cde";
int c = a.find(b); //2,表示在 a 的第 2 个字符处发现 b

string a = "abcabcabc";
string b = "acb";
int c = a.find(b); //-1,表示没找到

string a = "abcabcabc";
string b = "abc";
int c = a.rfind(b); //6,rfind 从 a 的最后字符开始向前找

string a = "abcabcabc";
string b = "abc";
int c = a.find(b, 2); //3,从 a 下标为 2 的字符开始找

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拔刀能留住落樱吗、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值