一天一个CRT函数 strrev

换工作了,一直在忙~

1.介绍

char *strrev( char *str );

用途:翻转字符串,返回翻转后的字符串

 

2.实现

/****
char *_strrev(string) - reverse a string in place

Purpose:
Reverses the order of characters in the string. The terminating
null character remains in place.

Entry:
char *string - string to reverse

Exit:
returns string - now with reversed characters

Uses:

Exceptions:

***/
inline tChar *tStrRev(tChar *pStr)
{
tChar *pStart = pStr;
tChar *pLeft = pStr;
tChar ch = 0;

// 指到字符串最后一个有效字符
while(*pStr++)
;
pStr -= 2;

// 比较起始地址于结束地址
while( pLeft < pStr )
{
ch = *pLeft;
*pLeft++ = *pStr;
*pStr-- = ch;
}

return pStart;
}
没什么好说的,十分简单~
 
3.测试
 
tChar string[] = _T("Able was I ere I saw Elba");

// Reverse string and compare (ignore case):
tChar *pTmp = CY_CRT::tStrRev(string);
wcout << pTmp << endl;

4.后记
STL里提供了算法reverse和reverse_copy,接受的迭代器类型需要为双向迭代器(也就是说,容器必须为vector、list、deque、string、原生数组)。
 
最近搞了STL里的容器算法和数据结构,在本系列完成后,追加一些最近的心得体会,顺便贴些自认为比较优秀的代码,还忘看官别骂~

你可能感兴趣的:(数据结构,算法,list,String,vector,character)