C++中如何比较两个字符变量的大小 5

 我来答
黯梅幽闻花
2010-11-25 · TA获得超过7110个赞
知道小有建树答主
回答量:1009
采纳率:0%
帮助的人:916万
展开全部
C++提供的字符串处理函数在string.h的头文件中声明。
字符串比较函数strcmp( )
函数原型:int strcmp(const char *s1, const char *s2);
int strncmp(const char *s1, const char *s2, int n);
功能:以字典顺序方式比较两个字符串是否相等。如果两个串相等,函数返回值为0;如果s1串大于s2串,返回值大于0;如果s1串小于s2串,返回值小于0。函数strcmp用于对两个串的完全比较;函数strncmp用于比较两个串的前n个字符。
【例5- 6】字符串比较。
#include <iostream.h>
#include <string.h>
#include <iomanip.h>

void main()
{
char s1[] = "Happy New Year";
char s2[] = "Happy New Year";
char s3[] = "Happy Holidays";

cout << "s1 = " << s1 << "\ns2 = "<< s2
<< "\ns3 = "<< s3 << "\n\nstrcmp(s1, s2) ="
<< setw( 2 ) << strcmp( s1, s2 )
<< "\nstrcmp(s1, s3) = "<< setw( 2 )
<< strcmp( s1, s3 ) << "\nstrcmp(s3, s1) ="
<< setw( 2 ) << strcmp( s3, s1 );

cout << "\n\nstrncmp(s1, s3, 6) = "<< setw( 2 )
<< strncmp( s1, s3, 6) << "\nstrncmp(sl, s3, 7) ="
<< setw( 2 ) << strncmp( s1, s3, 7 )
<< "\nstrncmp(s3, s1, 7) ="
<< setw( 2 ) << strncmp( s3, s1, 7 ) << endl;
}
程序运行结果如下:
s1 = Happy New Year
s2 = Happy New Year
s3 = Happy Holidays

strcmp(s1, s2) = 0
strcmp(s1, s3) = 1
strcmp(s3, s1) = -1

strncmp(s1, s3, 6) = 0
strncmp(s1, s3, 7) = 1
strncmp(s3, s1, 7) = -1

自定义版字符串比较
//当str1>str2时,返回正数
//当str1==str2时,返回0
//当str1<str2时,返回负数
int strcmp(const char *str1,const char *str2)
{
int x;
while(*str1!='\0'||*str2!='\0' )
{
if(*str1==*str2)
{
x=0;
str1++;
str2++;
continue;
}
if(*str1>*str2)
{ x=1;break ;}
if(*str1<*str2)
{ x=-1;break; }
if(*str1=='\0'&&*str2!='\0' )
{
x=-1; break;
}
if(*str1!='\0'&&*str2=='\0' )
{
x=1; break;
}
if(*str1=='\0' ||*str2=='\0' )
{
x=0;continue;
}
}
return x;
}
#include<iostream.h>
void main()
{
char*str1="Happy New Year!";
char*str2="Happy New Year!";
char*str3="Happy Holidays!";
cout<<"str1="<<str1<<"\nstr2="<<str2<<"\nstr3="<<str3<<endl;
cout<<"strcmp(str1,str2)="<<strcmp(str1,str2)
<<"\nstrcmp(str1,str3)="<<strcmp(str1,str3)
<<"\nstrcmp(str3,str1)="<<strcmp(str3,str1)<<endl;
}
aalns92
2010-11-27 · TA获得超过263个赞
知道答主
回答量:535
采纳率:100%
帮助的人:365万
展开全部
这两个看似一样的东西,其实是指向不同的地址,所以他们比较的时候在比较的是指针所指向的地址,当然会不同。

而且你写错了:
const char* x;
x = "3.1415926";
string y = "3.1415926";
if(x.c_str()==y)
return 1;
这个x是const char*类型,怎么可能能.c_str()呢。。。应该是if(x==y.c_str())吧。

正确的比较方法:
const char* x;
x = "3.1415926";
string y = "3.1415926";
if(*x==*y.c_str())
return 1;

使用*把他们都从指针变回非指针类型即可。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wxmeng04
推荐于2018-05-16 · TA获得超过556个赞
知道小有建树答主
回答量:328
采纳率:0%
帮助的人:120万
展开全部
字符的大小,可以直接用< > ==等逻辑运算符
比如 char a = '1';
char b = '2';
if(b>a)cout<<"b>a"<<endl;
else cout<<"a>=b"<<endl;
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
明天威威去旅行
2010-11-25 · TA获得超过136个赞
知道小有建树答主
回答量:318
采纳率:0%
帮助的人:233万
展开全部
string类直接用比较运算符 <,>,=
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式