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

来源:互联网 发布:mac版qq发说说会显示吗 编辑:程序博客网 时间:2024/06/04 19:20

在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码进行相同的处理结果会使得原本空格的地方出现@或者其他就丢失了仅仅大小写转换的效果。



0 0
原创粉丝点击