#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;
}
私の考えは、charをcharと比較するのではなく、int(4バイトの比較)に型キャストして、等しいかどうかをテストするxor演算を行います。 私の質問は、比較が必要(真、偽)なら正しいことです。私の文字列比較の実装は正しいですか?
あなたは正しいです。私は整列要件について考えていません。私はちょうど良い実装と思っています。 – user1438832
私は 'strcmp'がそのような方法で実装されることを覚えていると思います。つまり、' char'sの代わりに 'int'sを比較します。 – Gonmator
私の意図はスマートではありません。しかし、私はちょうど意見を知りたいと思って申し訳ありません。私は学んでいます。 – user1438832