C++strcmp文字列比較を実現するための深い検討

1404 ワード

strcmpの実装関数の概要の原型:extern int strcmp(const char*s 1,const char*s 2);
使用法:ヘッダファイルinclude
機能:文字列s 1とs 2を比較します.
一般形式:strcmp(文字列1、文字列2)
戻り値:
s 1 s 1がs 1=s 2の場合、戻り値=0 s 1>s 2の場合、戻り値>0は、異なる文字または'0'が現れるまで、左から右へ2文字列を1文字ずつ比較(ASCII値の大きさで比較)します.たとえば、「A」「A」「computer」「compare」
特に注意:1.strcmp(const char*s 1,const char*s 2)この中では文字列しか比較できず、数字などの他の形式のパラメータは比較できません.
2.戻り値については、ゼロ未満、ゼロ未満、ゼロ以上の3つの値を指定します.具体的にはどの値コンパイラが自分で決めたのか、プログラミング時に以下が大きいと判断し、VCではstrcmp("123","1234")が-1を返し、TCで-52を返すなど、1または-1に等しいかどうかを判断することはできない.
以下は私自身の実現で、足りないところは、まだ指摘してください!(ここの戻り-1,0,1)
 
  
#include "stdafx.h"
#include
#include
using namespace std;

int mystrcmp(const char* str1,const char* str2)
{
 assert(str1 != NULL && str2 != NULL);

 while(*str1 && *str2 && *str1 == *str2)
 {
  ++str1;
  ++str2;
 }
 if (*str1 > *str2)
  return 1;
 if (*str1 < *str2)
  return -1;
 else
  return 0;
}

int _tmain(int argc, _TCHAR* argv[])
{
 char *str1 = "Hello World";
 char *str2 = "Hello world";
 cout << mystrcmp(str1,str2) << endl;
 return 0;
}