一天一個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提供的算法實在太爽了!

發佈了100 篇原創文章 · 獲贊 6 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章