posts - 32, comments - 59, trackbacks - 0, articles - 2
  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

大小写转换的方法【C/C++】

Posted on 2005-10-10 11:52 这里的黄昏静悄悄 阅读(5873) 评论(9)  编辑 收藏 引用 所属分类: C/C++
ASCII码表大家都很熟悉了吧,利用码的排列规律,我们可以很容易的实现一些操作,比如判断是否是数字、大小写转换等。
这里写大小写转换的函数:
char toUpper(const char& ch)
{
    return ch & 0x5F;
}
char toLower(const char& ch)
{
    return ch | 0x20;
}
 
函数原理:大小写字母的差是32,比如大写的A是65,小写的A是97,所以我们把右边数第6位置0或者1就能实现大小写转换。转换成大写时,把第6位置0,用ch & 0x5F实现。转换成小写时置1,用ch | 0x20实现。怎么样,相当的简单吧,由此,我们可以写string类的toUpper和toLower函数了。^_^,更多技巧尽在探索中。

Feedback

# re: 大小写转换的方法【C/C++】  回复  更多评论   

2005-10-10 13:31 by 馒头
呵呵~知道了 谢谢!

# re: 大小写转换的方法【C/C++】  回复  更多评论   

2005-10-10 13:36 by 馒头
收藏咯~`` ^_^

# re: 大小写转换的方法【C/C++】  回复  更多评论   

2006-03-14 10:40 by 流氓coder
呵呵不错

# re: 大小写转换的方法【C/C++】  回复  更多评论   

2006-04-04 13:53 by jeck
那如何将字符串进行大小写转换呢?

# re: 大小写转换的方法【C/C++】  回复  更多评论   

2006-06-02 19:08 by AnalyticsQC
@jeck
char toUpper(const char& ch)
{
return ch & 0x5F;
}
char toLower(const char& ch)
{
return ch | 0x20;
}

string Upper(string s)
{
string US;
for(int i=0;i<s.length();i++)
US+=( toUpper(s[i]));
return US;
}

string Lower(string s)
{
string US;
for(int i=0;i<s.length();i++)
US+=( toLower(s[i]));
return US;
}



不过, 函数会把特殊字符比如 — _ , ' 换成其的偏移量, 处理字符串的大小写还是有些麻烦的

# re: 大小写转换的方法【C/C++】  回复  更多评论   

2006-06-04 17:20 by dabor
技巧不错!

如果运行在Windows里,直接用API函数CharLower和CharUpper更节约代码空间,是吧?

# re: 大小写转换的方法【C/C++】  回复  更多评论   

2008-03-18 00:29 by 小仙女

# re: 大小写转换的方法【C/C++】  回复  更多评论   

2008-03-18 00:30 by 小仙女

# re: 大小写转换的方法【C/C++】  回复  更多评论   

2012-01-28 12:38 by peaches
c++ 大小字符,字母的转换,我需要帮助
只有注册用户登录后才能发表评论。