猫史档案馆


C++下标大小写互换

用户:structstruct查看:0 回复:2 评论:0 创建时间:2022-08-27T15:21:25


要想做到大小写可以互换,我们先需要在DEV-C++中输入一下代码,导入头文件,使用命名空间STD:

#include<iostream>
#include<string>//头文件
using namespace std;//命名空间

接下来我们需要定义两个函数,一个是把所有字母全部大写,另一个是把全部字母变成小写:

先定义2个函数框架:

string bl/*big litter*/(string in)
{
    return in;
}
string ll/*little litter*/(string in)
{
    return in;
}

在这种情况下,这两个函数的返回值只能是你输入的值,接下来关键的部分来了,我们要把大小写互换的话,那么我们就需要用到ASCII,用下标(in[])来提取输入的字符串之中的一个字符。

ASCII码的表格如下:

center_image

我们可以看到,一个字母的大写和小写之间,ASCII相差了32,那么接下来就要简单多了:

for(int i=0;i<sizeof(in);i++)
{
    in[i]-=32;
}
//这里是大写状态的代码

(菜鸟请看这儿)sizeof(in) 和下图中这块积木是等价的:center_image

 

 

但这里还是有一个缺点的,如果你输入了一个特殊的字符,比如$,那么这个时候,这个字符就会变成另一个字符,如果你输入了大写字母,比如A,也会给你跳到另一个符号。

所以为了解决这个棘手的麻烦,我们需要加一个判断:

if(in[i]>=65&&in[i]<=90)
{
    in[i]+=32;
}

这样的话就可以只让小写变成大写了,把小写转换成大写的代码整合一下:

string bl(string in)
{
	for(int i=0;i<sizeof(in);i++)
	{
		if(in[i]>=97&&in[i]<=122)
		{
			in[i]-=32;
		}
	}
	return in;
}	

大写转换成小写代码也一样:

string ll(string in)
{
	for(int i=0;i<sizeof(in);i++)
	{
		if(in[i]>=65&&in[i]<=90)
		{
			in[i]+=32;
		}
	}
	return in;
}	

最后,还需要测试一下这玩意灵不灵^_^:

int main()
{
	cout<<bl("amazing!")<<endl;
	cout<<ll("AMAZING!")<<endl;
	return 0;
}

事实证明,花了一个小时研究出来的东西还是管用的:

运行结果如下↓

center_image

好了,成功了,你学废了吗?

哦,对了,最后的代码还有全部整合:

#include<iostream>
#include<string>
using namespace std;
namespace std
{
	string bl(string in)
	{
		for(int i=0;i<sizeof(in);i++)
		{
			if(in[i]>=97&&in[i]<=122)
			{
				in[i]-=32;
			}
		}
		return in;
	}	
	string ll(string in)
	{
		for(int i=0;i<sizeof(in);i++)
		{
			if(in[i]>=65&&in[i]<=90)
			{
				in[i]+=32;
			}
		}
		return in;
	}	
}
int main()
{
	cout<<bl("amazing!")<<endl;
	cout<<ll("AMAZING!")<<endl;
	return 0;
}

 

center_image

VDU代码师的教程就到这里啦~喜欢的话务必评论~支持一下~

(下期正式开始进行讲解,这期只是摸鱼)

center_image

 


回复

上一页1 页 / 共 1下一页
不知道该叫啥的一只萌新不知道该叫啥的一只萌新

首先 楼主的代码稍微有一点问题

namespace std
{
	string bl(string in)
	{
		for(int i=0;i<in.size();i++)
		{
			if(in[i]>=97&&in[i]<=122)
			{
				in[i]-=32;
			}
		}
		return in;
	}	
	string ll(string in)
	{
		for(int i=0;i<in.size();i++)
		{
			if(in[i]>=65&&in[i]<=90)
			{
				in[i]+=32;
			}
		}
		return in;
	}	
}

同时 不建议想楼主一样把函数直接写到std里()

点赞0


评论


xwstsrhxwstsrh

𝐀𝐁𝐂𝐃𝐄𝐅𝐆𝐇𝐈𝐉𝐊𝐋𝐌𝐍𝐎𝐏𝐐𝐑𝐒𝐓𝐔𝐕𝐖𝐗𝐘𝐙

𝐚𝐛𝐜𝐝𝐞𝐟𝐠𝐡𝐢𝐣𝐤𝐥𝐦𝐧𝐨𝐩𝐪𝐫𝐬𝐭𝐮𝐯𝐰𝐱𝐲𝐳

𝐴𝐵𝐶𝐷𝐸𝐹𝐺𝐻𝐼𝐽𝐾𝐿𝑀𝑁𝑂𝑃𝑄𝑅𝑆𝑇𝑈𝑉𝑊𝑋𝑌𝑍

𝑎𝑏𝑐𝑑𝑒𝑓𝑔𝑖𝑗𝑘𝑙𝑚𝑛𝑜𝑝𝑞𝑟𝑠𝑡𝑢𝑣𝑤𝑥𝑦𝑧

𝑨𝑩𝑪𝑫𝑬𝑭𝑮𝑯𝑰𝑱𝑲𝑳𝑴𝑵𝑶𝑷𝑸𝑹𝑺𝑻𝑼𝑽𝑾𝑿𝒀𝒁

𝒂𝒃𝒄𝒅𝒆𝒇𝒈𝒉𝒊𝒋𝒌𝒍𝒎𝒏𝒐𝒑𝒒𝒓𝒔𝒕𝒖𝒗𝒘𝒙𝒚𝒛

𝒜𝒞𝒟𝒢𝒥𝒦𝒩𝒪𝒫𝒬𝒮𝒯𝒰𝒱𝒲𝒳𝒴𝒵

𝒶𝒷𝒸𝒹𝒻𝒽𝒾𝒿𝓀𝓁𝓂𝓃𝓅𝓆𝓇𝓈𝓉𝓊𝓋𝓌𝓍𝓎𝓏

𝓐𝓑𝓒𝓓𝓔𝓕𝓖𝓗𝓘𝓙𝓚𝓛𝓜𝓝𝓞𝓟𝓠𝓡𝓢𝓣𝓤𝓥𝓦𝓧𝓨𝓩

𝓪𝓫𝓬𝓭𝓮𝓯𝓰𝓱𝓲𝓳𝓴𝓵𝓶𝓷𝓸𝓹𝓺𝓻𝓼𝓽𝓾𝓿𝔀𝔁𝔂𝔃

𝔄𝔅𝔇𝔈𝔉𝔊𝔍𝔎𝔏𝔐𝔑𝔒𝔓𝔔𝔖𝔗𝔘𝔙𝔚𝔛𝔜

𝔞𝔟𝔠𝔡𝔢𝔣𝔤𝔥𝔦𝔧𝔨𝔩𝔪𝔫𝔬𝔭𝔮𝔯𝔰𝔱𝔲𝔳𝔴𝔵𝔶𝔷

𝔸𝔹𝔻𝔼𝔽𝔾𝕀𝕁𝕂𝕃𝕄𝕆𝕊𝕋𝕌𝕍𝕎𝕏𝕐

𝕒𝕓𝕔𝕕𝕖𝕗𝕘𝕙𝕚𝕛𝕜𝕝𝕞𝕟𝕠𝕡𝕢𝕣𝕤𝕥𝕦𝕧𝕨𝕩𝕪𝕫

𝕬𝕭𝕮𝕯𝕰𝕱𝕲𝕳𝕴𝕵𝕶𝕷𝕸𝕹𝕺𝕻𝕼𝕽𝕾𝕿𝖀𝖁𝖂𝖃𝖄𝖅

𝖆𝖇𝖈𝖉𝖊𝖋𝖌𝖍𝖎𝖏𝖐𝖑𝖒𝖓𝖔𝖕𝖖𝖗𝖘𝖙𝖚𝖛𝖜𝖝𝖞𝖟

𝖠𝖡𝖢𝖣𝖤𝖥𝖦𝖧𝖨𝖩𝖪𝖫𝖬𝖭𝖮𝖯𝖰𝖱𝖲𝖳𝖴𝖵𝖶𝖷𝖸𝖹

𝖺𝖻𝖼𝖽𝖾𝖿𝗀𝗁𝗂𝗃𝗄𝗅𝗆𝗇𝗈𝗉𝗊𝗋𝗌𝗍𝗎𝗏𝗐𝗑𝗒𝗓

𝗔𝗕𝗖𝗗𝗘𝗙𝗚𝗛𝗜𝗝𝗞𝗟𝗠𝗡𝗢𝗣𝗤𝗥𝗦𝗧𝗨𝗩𝗪𝗫𝗬𝗭

𝗮𝗯𝗰𝗱𝗲𝗳𝗴𝗵𝗶𝗷𝗸𝗹𝗺𝗻𝗼𝗽𝗾𝗿𝘀𝘁𝘂𝘃𝘄𝘅𝘆𝘇

𝘈𝘉𝘊𝘋𝘌𝘍𝘎𝘏𝘐𝘑𝘒𝘓𝘔𝘕𝘖𝘗𝘘𝘙𝘚𝘛𝘜𝘝𝘞𝘟𝘠𝘡

𝘢𝘣𝘤𝘥𝘦𝘧𝘨𝘩𝘪𝘫𝘬𝘭𝘮𝘯𝘰𝘱𝘲𝘳𝘴𝘵𝘶𝘷𝘸𝘹𝘺𝘻

𝘼𝘽𝘾𝘿𝙀𝙁𝙂𝙃𝙄𝙅𝙆𝙇𝙈𝙉𝙊𝙋𝙌𝙍𝙎𝙏𝙐𝙑𝙒𝙓𝙔𝙕

𝙖𝙗𝙘𝙙𝙚𝙛𝙜𝙝𝙞𝙟𝙠𝙡𝙢𝙣𝙤𝙥𝙦𝙧𝙨𝙩𝙪𝙫𝙬𝙭𝙮𝙯

𝙰𝙱𝙲𝙳𝙴𝙵𝙶𝙷𝙸𝙹𝙺𝙻𝙼𝙽𝙾𝙿𝚀𝚁𝚂𝚃𝚄𝚅𝚆𝚇𝚈𝚉

𝚊𝚋𝚌𝚍𝚎𝚏𝚐𝚑𝚒𝚓𝚔𝚕𝚖𝚗𝚘𝚙𝚚𝚛𝚜𝚝𝚞𝚟𝚠𝚡𝚢𝚣𝚤𝚥这些Unicode里的也可以吗

点赞0


评论