C++實(shí)現(xiàn)strcmp字符串比較的深入探討
更新時(shí)間:2013年05月28日 18:05:56 作者:
本篇文章是對(duì)使用C++實(shí)現(xiàn)strcmp字符串比較進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
strcmp的實(shí)現(xiàn)
函數(shù)簡(jiǎn)介原型:extern int strcmp(const char *s1,const char * s2);
用法:加頭文件 #include <string.h>
功能:比較字符串s1和s2。
一般形式:strcmp(字符串1,字符串2)
返回值:
當(dāng)s1<s2時(shí),返回值<0
當(dāng)s1=s2時(shí),返回值=0
當(dāng)s1>s2時(shí),返回值>0
即:兩個(gè)字符串自左向右逐個(gè)字符相比(按ASCII值大小相比較),直到出現(xiàn)不同的字符或遇'\0'為止。如:"A"<"B" "a">"A" "computer">"compare"
特別注意:
1. strcmp(const char *s1,const char * s2)這里面只能比較字符串,不能比較數(shù)字等其他形式的參數(shù)。
2. 關(guān)于返回值,標(biāo)準(zhǔn)只是規(guī)定三個(gè)值:小于零,零,大于零。具體是什么值編譯器自己定的,所以編程時(shí)候判斷小于等于大于,不能判斷是否等于1或者-1,如在VC中strcmp("123","1234") 返回-1,而在TC中返回-52。
下面是我自己的實(shí)現(xiàn),不足之處,還望指正?。ㄎ疫@里的返回-1,0,1)
#include "stdafx.h"
#include <iostream>
#include <assert.h>
using namespace std;
<P>int mystrcmp(const char* str1,const char* str2)
{
assert(str1 != NULL && str2 != NULL);</P><P> while(*str1 && *str2 && *str1 == *str2)
{
++str1;
++str2;
}
if (*str1 > *str2)
return 1;
if (*str1 < *str2)
return -1;
else
return 0;
}</P>int _tmain(int argc, _TCHAR* argv[])
{
char *str1 = "Hello World";
char *str2 = "Hello world";
cout << mystrcmp(str1,str2) << endl;
return 0;
}
函數(shù)簡(jiǎn)介原型:extern int strcmp(const char *s1,const char * s2);
用法:加頭文件 #include <string.h>
功能:比較字符串s1和s2。
一般形式:strcmp(字符串1,字符串2)
返回值:
當(dāng)s1<s2時(shí),返回值<0
當(dāng)s1=s2時(shí),返回值=0
當(dāng)s1>s2時(shí),返回值>0
即:兩個(gè)字符串自左向右逐個(gè)字符相比(按ASCII值大小相比較),直到出現(xiàn)不同的字符或遇'\0'為止。如:"A"<"B" "a">"A" "computer">"compare"
特別注意:
1. strcmp(const char *s1,const char * s2)這里面只能比較字符串,不能比較數(shù)字等其他形式的參數(shù)。
2. 關(guān)于返回值,標(biāo)準(zhǔn)只是規(guī)定三個(gè)值:小于零,零,大于零。具體是什么值編譯器自己定的,所以編程時(shí)候判斷小于等于大于,不能判斷是否等于1或者-1,如在VC中strcmp("123","1234") 返回-1,而在TC中返回-52。
下面是我自己的實(shí)現(xiàn),不足之處,還望指正?。ㄎ疫@里的返回-1,0,1)
復(fù)制代碼 代碼如下:
#include "stdafx.h"
#include <iostream>
#include <assert.h>
using namespace std;
<P>int mystrcmp(const char* str1,const char* str2)
{
assert(str1 != NULL && str2 != NULL);</P><P> while(*str1 && *str2 && *str1 == *str2)
{
++str1;
++str2;
}
if (*str1 > *str2)
return 1;
if (*str1 < *str2)
return -1;
else
return 0;
}</P>int _tmain(int argc, _TCHAR* argv[])
{
char *str1 = "Hello World";
char *str2 = "Hello world";
cout << mystrcmp(str1,str2) << endl;
return 0;
}
相關(guān)文章
c++將引用或者是指針作為函數(shù)參數(shù)實(shí)現(xiàn)實(shí)參的運(yùn)算
這篇文章主要介紹了c++將引用或者是指針作為函數(shù)參數(shù)實(shí)現(xiàn)實(shí)參的運(yùn)算,需要的朋友可以參考下2014-05-05C++中4種強(qiáng)制類型轉(zhuǎn)換的區(qū)別總結(jié)
C++風(fēng)格的類型轉(zhuǎn)換提供了4種類型轉(zhuǎn)換操作符來(lái)應(yīng)對(duì)不同場(chǎng)合的應(yīng)用。下面這篇文章主要給大家介紹了C++中4種強(qiáng)制類型轉(zhuǎn)換的區(qū)別,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。2016-12-12C++寬字符與普通字符的轉(zhuǎn)換實(shí)例詳解
這篇文章主要介紹了C++寬字符與普通字符的轉(zhuǎn)換實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06C++實(shí)現(xiàn)簡(jiǎn)單24點(diǎn)游戲
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡(jiǎn)單24點(diǎn)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03C++實(shí)現(xiàn)LeetCode(127.詞語(yǔ)階梯)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(127.詞語(yǔ)階梯),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07C語(yǔ)言如何利用異或進(jìn)行兩個(gè)值的交換詳解
最近在工作中遇到了兩個(gè)值交換的需求,發(fā)現(xiàn)自己對(duì)異或有些忘記,所以索性寫出來(lái),方便以后需要的時(shí)候參考學(xué)習(xí),下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言如何利用異或進(jìn)行兩個(gè)值的交換的相關(guān)資料,需要的朋友可以參考下。2017-09-09詳解c/c++賦值函數(shù)(重載=號(hào)運(yùn)算符)
大家都知道c++里的各種運(yùn)算符都是用函數(shù)實(shí)現(xiàn)的,比如=就等號(hào)函數(shù),所以當(dāng)用=給一個(gè)對(duì)象賦值的時(shí)候,實(shí)際調(diào)用的是=號(hào)所對(duì)應(yīng)的=號(hào)函數(shù)。下面通過(guò)本文給大家介紹c/c++賦值函數(shù)(重載=號(hào)運(yùn)算符),感興趣的朋友一起看看吧2018-08-08