C++字母大小写转换方法

来源:互联网 发布:达内软件培训机构 编辑:程序博客网 时间:2024/06/03 09:34

字母大小写这个问题相对比较简单,总结了一些常用的大小写转换的方法,欢迎指正补充!

思路1:根据字母的ASCII表进行转换:


由表格可以看出,对应大小写字母之间相差32,由此可以衍生出以下编程的思路:


程序1.1 

#include <iostream>using namespace std;int main(){char a[20];int i = 0;cout<<"请输入一串字符:\n";cin>>a;for(;a[i];i++){if(a[i] >= 'a'&&a[i] <= 'z')            a[i] -= 32;else if(a[i] >= 'A'&&a[i] <= 'Z')            a[i] += 32;}for(i = 0;a[i];i++)cout<<a[i];cout<<endl;system("pause");return 0;}

程序1.2

#include <iostream>using namespace std;void main(void){    char i;    cout<<"Input,'#'for an end: "<<endl;    while(1)    {        cin >> i;        if ((i>=65)&&(i<=90))        {            i=i+32;            cout << i;        }        else if((i>=97)&&(i<=122))        {            i=i-32;            cout << i;        }        else            cout << (int)i;        if(i=='#')            break;    }}

思路2利用大小写字母转换函数,由此可以衍生出一下几种编程的思路:

程序2.1   简易版

#include <iostream>using namespace std;int main(){    cout<<(char)toupper(97)<<'\n';    cout<<(char)toupper('a')<<'\n';    cout<<(char)tolower(66)<<'\n';    cout<<(char)tolower('B')<<'\n';    return 0;}

程序2.2  利用函数strupr、strlwr

#include<iostream>#include<string>using namespace std;int main(int argc, char* argv[]){    //声明字符数组    char str[80],*p;    int i;    //转换字符串中的小写为大写    cout<<"将字符串中的小写字母转换为大写"<<endl;    cout<<"请输入原字符串:"<<endl;    cin>>str;    p=strupr(str);    cout<<"p:"<<p<<endl;    cout<<"string:"<<str<<endl;    cout<<"___________________"<<endl;    //转换字符串中的大写为小写    cout<<"将字符串中的大写字母转换为小写"<<endl;    cout<<"请输入原字符串:"<<endl;    cin>>str;    p=strlwr(str);    cout<<"p:"<<p<<endl;    cout<<"string:"<<str<<endl;    cout<<"___________________"<<endl;system("pause");return 0;}


程序2.3  利用函数toupper、tolower

#include<iostream>#include<cctype>#include<vector>using namespace std;int main(){    vector<char> vch;    int n;    char elem;    cout<<"请输入大小写字符的个数:";    cin>>n;    cout<<"请输入"<<n<<"个大小写字符:";    for(int i = 0;i<n;++i)    {        cin>>elem;        vch.push_back(elem);    }    vector<char>::iterator it = vch.begin();    for(it;it != vch.end();++it)    {        if(*it >= 'a'&&(*it) <='z')            *it = toupper(*it);        else if(*it >= 'A'&& (*it) <= 'Z')            *it = tolower(*it);    }    cout<<"大小写转化之后的结果:";    vector<char>::iterator itera = vch.begin();    for(itera;itera != vch.end();++itera)        cout<<*itera;    cout<<endl;    return 0;}


程序2.4 利用transform和tolower及toupper进行结合

#include<iostream>#include<algorithm>#include<string>#include<cctype>using namespace std;int main(){    cout<<"请输入一个全部大写的字符串:";    string str;    cin>>str;    ///转小写    transform(str.begin(),str.end(),str.begin(),tolower);    ///transform(wstr.begin(), wstr.end(), wstr.begin(), towlower);    cout<<"转化为小写后为:"<<str<<endl;    ///转大写    cout<<"请再输入一个全部小写的字符串:";    string s;    cin>>s;    transform(s.begin(), s.end(), s.begin(), toupper);    ///transform(wstr.begin(), wstr.end(), wstr.begin(), towupper);    cout<<"转化为大写后为:"<<s;    wstring wstr =L"Abc";    transform(wstr.begin(), wstr.end(), wstr.begin(), towupper);    cout<<wstr;    return 0;}


程序2.5  注意wmain(),另一种编程方法

#include <iostream>#include <cstring>#include <windows.h>#include <cctype>#include <algorithm>using namespace std;int wmain(int argc, WCHAR* argv[]){    char ch = 'a';    ch = toupper(ch);    cout<<ch<<endl;    WCHAR wch = 'a';    wch = towupper(wch);    cout<<char(wch)<<endl;    WCHAR wideStr[] = L"Abc";    _wcslwr_s(wideStr, wcslen(wideStr) + 1);    _wcsupr_s(wideStr, wcslen(wideStr) + 1);    wstring wstr =L"Abc";    transform(wstr.begin(), wstr.end(), wstr.begin(), towupper);    return 0;}


程序2.6  写成convert函数,利用|=和&=进行变换

#include <iostream>#include <cassert>using namespace std;char* convert(char *src){    char *p = src;    assert(p != NULL);    while(*p)    {        if ('A' <= *p && *p < 'Z')            *p |= 0x20;        else if ('a' <= *p && *p < 'z')            *p &= ~0x20;        p++;    }    return src;}int main(){    char src;    cin>>src;    convert(&src);    cout<<src;    return 0;}


当然还有其它方法,欢迎补充!


参考资料:

c++字符串大小写转换

c++大小写转换

C++大小写转换

toupper, _toupper, towupper, _toupper_l, _towupper_l 

2 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 吃到鱼刺卡喉咙怎么办 带鱼刺扎进喉咙怎么办 喉咙被鱼刺卡了怎么办 喉咙里卡了鱼刺怎么办 卡了鱼刺在喉咙怎么办 日剧 哥哥太爱我怎么办 被竹叶青蛇咬了怎么办 被眼镜王蛇咬了怎么办 被黄蜂蛰了怎么办消肿 被黑色黄蜂蜇了怎么办 手指被黄蜂蛰了怎么办 被马蜂蛰了肿了怎么办 给青竹蛇咬了怎么办 被青竹蛇咬了怎么办 孕早期吃了桂皮怎么办? 怀孕后吃了八角怎么办 孕妇吃了点八角怎么办 煮粥老是溢出来怎么办 6个月的小孩咳嗽怎么办 10个月婴儿咳嗽怎么办 6个月婴儿感冒了怎么办 六个月宝宝有痰怎么办 9月婴儿牛奶过敏怎么办 一用粉底就过敏怎么办 7个月婴儿过敏怎么办 9个月宝宝腹泻怎么办 9个月宝宝拉肚子怎么办 5个月宝宝拉肚子怎么办 九个月大宝宝拉肚子怎么办 九个半月的宝宝拉肚子怎么办 9个月婴儿拉稀怎么办 九个月的宝宝拉肚子怎么办 9个月宝宝拉稀水怎么办 2岁宝宝腹泻拉水怎么办 18个月宝宝拉水怎么办 2个月宝宝拉稀水怎么办 2个月的宝宝腹泻怎么办 2个月的宝宝拉稀怎么办 宝宝不喝补液盐怎么办 4个月宝宝腹泻怎么办 6个月宝宝腹泻怎么办