一天一个CRT函数 _strlwr/_strupr
来源:互联网 发布:淘宝产品数据包 编辑:程序博客网 时间:2024/06/06 01:59
这是一组性格迥异的兄弟函数,_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提供的算法实在太爽了!
- 一天一个CRT函数 _strlwr/_strupr
- 一天一个CRT函数 _memccpy
- 一天一个CRT函数 memchr
- 一天一个CRT函数 memcmp
- 一天一个CRT函数 memcpy
- 一天一个CRT函数 _memicmp
- 一天一个CRT函数 memmove
- 一天一个CRT函数 memset
- 一天一个CRT函数 _swap
- 一天一个CRT函数 atof
- 一天一个CRT函数 atoi
- 一天一个CRT函数 strcoll
- 一天一个CRT函数 _strdec
- 一天一个CRT函数 strchr
- 一天一个CRT函数 strcspn
- 一天一个CRT函数 _strdup
- 一天一个CRT函数 strpbrk
- 一天一个CRT函数 strcspn
- 给CListCtrl添加右键菜单
- 一个java写的弹球小游戏
- IT该进外企还是国企
- February, 9
- XML解析器接口--C++版
- 一天一个CRT函数 _strlwr/_strupr
- XML解析器接口—java版
- hibernate配置文件中的unsaved-value属性含义
- vs2005的FILE指针
- Posix标准中的timer和AIO
- char *和char数组的区别(深拷贝和浅拷贝的观点)以及内核访问用户空间
- 将普通的套接字网络应用修改为ssl网络应用
- 可重入性和线程安全
- i++循环与i--循环