一天一个CRT函数 _strlwr/_strupr

这是一组性格迥异的兄弟函数,_strlwr负责把字符串中所有字符转换为小写,_strupr把字符串的所有字符转换为大写。

1.介绍

_strlwr的原型为:char *_strlwr(char *str)

_strupr的原型为:char *_strupr(char *str)

长得都差不多,返回值也都是经过处理的字符串指针。

 

2.实现

inline tChar *tStrLwr(tChar *pStr)
{
for(tChar *cp = pStr; *cp != _T('/0'); ++cp)
{
if( _T('A') <= *cp && *cp <= _T('Z') )
*cp += _T('a') - _T('A');
}

return pStr ;
}

inline tChar *tStrUpr(tChar *pStr)
{
for(tChar *cp = pStr; *cp; ++cp)
if( (_T('a') <= *cp) && (*cp <= _T('z')) )
*cp -= _T('a') - _T('A');

return pStr;
}
很简单哈,就是利用循环把每个字符做出相应的调整。如果是转换为大写,就减去‘a’ - ‘A’的值,如果是转换为小写则加上‘a’ -‘A’的值。
 
3.测试
tChar pStr1[] = _T("AbCdEf");

tChar *pLower = CY_CRT::tStrLwr(pStr1);
wcout << pLower << endl;

tChar *pUper = CY_CRT::tStrUpr(pStr1);
wcout << pUper << endl;


4.后记
如果用STL算法库和std::string结合起来实现字符串的大小写转换,这里有个实现方法
inline void ToUpper(tString &str)
{
transform(str.begin(), str.end(), str.begin(), ::toupper);
}

inline void ToLower(tString &str)
{
transform(str.begin(), str.end(), str.begin(), ::tolower);
}

哈哈,STL提供的算法实在太爽了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值