一天一个CRT函数 _memicmp
2009-12-24 16:02
387 查看
已经有两天没有发表这个系列了,我都快被失眠折磨疯了!连续两晚都是凌晨5点才睡着~
今天来看看_memicmp吧,很少使用的家伙!
5._memicmp
注:ToLower是我自己的转小写函数,同crt的tolower。
那和strcmp有什么关系呢?strcmp是专门针对字符串的函数,需要判断字符串’/0’终止符,而_memicmp是根据缓冲区大小来进行判断的。
测试:
结果肯定是_memicmp胜利!相差不大。
今天来看看_memicmp吧,很少使用的家伙!
5._memicmp
1: /****
2: Purpose:
3: 比较两缓冲区指定区间的字符,在比较前会转换为小写(忽略大小写)
4:
5: Entry:
6: T *pBuffer1, *pBuffer2 - 所要比较的两缓冲区
7: unsigned int uCnt - 缓冲区大小
8:
9: Exit:
10: returns <0 if pBuffer1 < pBuffer2
11: returns 0 if pBuffer1 == pBuffer2
12: returns >0 if pBuffer1 > pBuffer2
13:
14: Exceptions:
15:
16: **/
17:
18: template<typename T>
19: inline int tMemICmp(T *pBuffer1, T *pBuffer2, unsigned int uCnt)
20: {
21: if( uCnt == 0 )
22: return 0;
23:
24: while(--uCnt && ToLower(*pBuffer1++) == ToLower(*pBuffer2++) )
25: ;
26:
27: return (ToLower(*pBuffer1) - ToLower(*pBuffer2));
28: }
注:ToLower是我自己的转小写函数,同crt的tolower。
那和strcmp有什么关系呢?strcmp是专门针对字符串的函数,需要判断字符串’/0’终止符,而_memicmp是根据缓冲区大小来进行判断的。
测试:
1: int result = 0;
2: volatile tChar first[] = _T("Those Who Will Not Learn from History");
3: volatile tChar second[] = _T("THOSE WHO WILL NOT LEARN FROM their mistakes");
4:
5: volatile const DWORD dwCount = 1000000;
6:
7: DWORD dwLast = 0;
8:{
9: CCYPerformance timer(dwLast);
10: for(DWORD i = 0; i < dwCount; ++i)
11: {
12: result = CY_CRT::tMemICmp( first, second, sizeof(first) / sizeof(first[0]) );
13: }
14: }
15:cout << dwLast << endl;
16:
17: dwLast = 0;
18: {
19: CCYPerformance timer(dwLast);
20: for(DWORD i = 0; i < dwCount; ++i)
21: {
22: result = _memicmp( (const void *)first, (const void *)second, sizeof(first) / sizeof(first[0]) );
23: }
24: }
25: cout << dwLast << endl;
结果肯定是_memicmp胜利!相差不大。
相关文章推荐
- 一天一个CRT函数 _strlwr/_strupr
- 一天一个CRT函数 _strdup
- 一天一个CRT函数 atof
- 一天一个CRT函数 atoi
- 一天一个CRT函数 _memccpy
- 一天一个CRT函数 memcpy
- 一天一个CRT函数 strcoll
- 一天一个CRT函数 _strdec
- 一天一个CRT函数 strchr
- 一天一个CRT函数 memmove
- 一天一个CRT函数 _swap
- 一天一个CRT函数 strpbrk
- 一天一个CRT函数 strrev
- 一天一个CRT函数 memchr
- 一天一个CRT函数 memset
- 一天一个CRT函数 strcspn
- 一天一个CRT函数 __toascii tolower toupper
- 一天一个CRT函数 strcspn
- 一天一个CRT函数 memcmp
- 一天一个CRT函数 strstr