学会一个字符转换为小写的函数

在codeforces里做题的时候,碰到了一道题,链接在这里。我在网上看到别人代码的时候看到了别人写的一个函数,这是我没用过的,所以记录下来。函数名为tolower(),函数名顾名思义,将字符转换为小写,其实它的效果也可以根据ASCII码大小写之间的差进行转换的效果是一样的。不知道是否存在一个toupper(),将字符转换为大写,一会可以试一试。先把tolower记录下来再说。

tolower

template<Class CharType>
   CharType tolower(
      CharType _Ch, 
      const locale& _Loc
   )
参数

_Ch

将转换为小写的字符。

_Loc

包含字符的区域设置进行转换。

返回值

字符转换为小写

也不怎么需要特定的头文件

找一段代码试一试函数的效果,代码如下:

#include <iostream>
#include <string>
//#include <cctype>
using namespace std;
int main()
{
	string str = "THIS IS A STRING";
	for (int i = 0; i <str.size(); i++)
		str[i] = tolower(str[i]);
	cout << str << endl;
	return 0;
}
输出为 this is a string,下面我用ASCII码也可以实现相同的功能,代码如下啊:

#include <iostream>
#include <string>
//#include <cctype>
using namespace std;
int main()
{
	string str = "THIS IS A STRING";
	for (int i = 0; i <str.size(); i++)
		if(isalpha(str[i]))
			str[i] = str[i]+32;
	cout << str << endl;
	return 0;
}
这两段代码效果是相同的。下面我来试一试有没有一个函数叫做toupper(),呵呵,别说还真存在啊,代码如下:

#include <iostream>
#include <string>
//#include <cctype>
using namespace std;
int main()
{
	string str = "this is a string";
	for (int i = 0; i <str.size(); i++)
		//if(isalpha(str[i]))
			str[i] = toupper(str[i]);
	cout << str << endl;
	return 0;
}
当然我也可以根据ASCII码来做相应的转换

#include <iostream>
#include <string>
//#include <cctype>
using namespace std;
int main()
{
	string str = "this is a string";
	for (int i = 0; i <str.size(); i++)
		if(isalpha(str[i]))
			str[i] = str[i]-32;
	cout << str << endl;
	return 0;
}

好了,综上记住两个字符串大小写转换的函数tolower和toupper,也不怎么需要什么特殊的头文件直接就可以用,比根据用ASCII码转换要方便一些,因为用ASCII码进行大小写转换可能涉及到字符串中有空格的问题,在空格的情况下使用ASCII码进行相同的处理结果会使得原本空格的地方出现@或者其他就丢失了仅仅大小写转换的效果。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值