#include <iostream>
using namespace std;
bool isEqual(const char *a,const char *b)
{
int lengthA=strlen(a);
int lengthB=strlen(b);
if( lengthA != lengthB)
{
return false;
}
int intLength=sizeof(int);
int *ptrA;
int *ptrB;
int i=0;
for(;i<lengthA/intLength;i++)
{
ptrA=(int*)(a+(i*intLength));
ptrB=(int*)(b+(i*intLength));
if(( (*ptrA) ^ (*ptrB) ))
{
return false;
}
}
i=lengthA-lengthA%intLength+1;
for(;i<lengthA;i++)
{
if(a[i] != b[i])
{
return false;
}
}
return true;
}
int main()
{
cout<<isEqual("asasa","asasa")<<endl;
return 0;
}
我的想法不是按字符比较字符,而是将其类型转换为int(4字节比较),然后执行xor操作以测试它们是否相等。我的问题是,如果仅比较require(true,false)是正确的。
这是不确定的行为。(您正在取消指向int
所指向的对象不是int的指针。)
几乎可以肯定,该代码将比strcmp慢(如果指针正确对齐,则通常会执行类似的操作-可能会使循环展开几次)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句