C++语言入门--零基础学习笔记(5)

前言

本次我们要学习字符串的操作、字符ASII码以及位置互换等操作。并结合3个例子进行学习。学习资料来源于代码随想录的基础课程,想进一步了解细节,可以去原文看看。

1. 字符串

字符表示单个字符,每个字符用单引号扩起来,比如’a’, 而字符串是一个可变长度的字符序列,可以包含多个字符,用双引号扩起来,比如"hello"。
在c++中用string类型来表示字符串,在使用时,我们需将其头文件包含进来,如:

#include<string>
  • 字符串(string)的声明和定义:
#include<string>
string a1; // 默认初始化,定一个空的字符串a1
string a2 = "hello world"; // 初始化一个值为hello world的字符串
string a3(5, 's') // 定义由连续5个字符s组成的串,即'sssss'
  • 字符串(string)的操作
//字符串链接
string s1 = "hello";
string s2 = "world";
string s3 = s1 + " " + s2; // 拼接之后的字符串是"hello world", 中间加了空格

//获取字符串的长度
int length = s1.size(); // 字符串的长度即字符串中字符的个数,"hello"的长度为5

//按位读取字符串
char c1 = s1[0]; // 下标从0开始,表示字符串的第一个字符,即c1='h'

//判断字符串是否为空
if (s1.empty()) {
  // 如果字符串为空则返回true, 否则返回false
}

//字符串输出
cout << s1 << endl;//表示输出s1,"hello"
cout << s1[0] << endl;//表示输出s1的第一位,'h' 

此外我们在读取某个值的时候,我们常用的是cin。但是该指令在读字符串的时候,一读到空格就会停止,无法达到读取类似英语一句话的目的。这里我们可以采用getline()函数,该函数会一直读取字符,直到遇到换行符(Enter键)或文件结束符(如果从文件读取)才结束。使用时可以定位为:

string s1;
getline(cin,s);//这一行代码,会读取一行字符串并幅值给s。
getchar();//可以用来获取即将输入的一个字符

2 . 大小写转换

大小写转换,我们这里以一个实际例子进行讲解。假如有一行字符 "abc edf GHJ ",中间由一个或者多个空格符隔开,我们要将大写的转换为小写字符,小写字符转化为大写字符。最后段字符,用一个空格隔开,并输出。可以用以下代码实现

#include<iostream>
#include<string>
using namespace std;
//改变符号,大小写的ASCII码相差32,我们用字符加减32既可以实现大小写转换	
string changeChar(string &s) 
{ 
	for (int i = 0; i < s.size(); i++)
    {
    	if (s[i] >= 'a' && s[i] <= 'z') 
    		s[i] -= 32;
    	else if (s[i] >= 'A' && s[i] <= 'Z')
    		s[i] += 32;
    	else 
    		continue; //如果为空格则跳出当前循环
    }	
    return s;
}
int main()
{
	string s = "abc edf      GHJ";//所定义的字符串
	string result;  //用来输出结果
	result = changeChar(s);
	for(int i=0;i<result.size();i++){
		//判断当前是最后一个空格了
		if(result[i] == ' ' && result[i+1] != ' '){
			cout << " ";
		}
		//不是最后一个空格,且存在多个空格的情况,跳出当前循环
		else if (result[i] == ' ' && result[i+1] == ' ') continue;
		else cout << result[i];//输出转换后的值
	}
	return 0;
}

3. 位置互换

这里提供一个代码模板,可以实现对应位置的元素互换,核心思想就是找一个中间变量来承接交换。

void swap(char &a, char &b) { // 交换两个字符串,如果要交换两个数字,可将行参修改为对应类型
    char tmp = a;
    a = b;
    b = tmp;
}

4. 总结

以上即是本次学习的全部内容。

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值