C++里的if语句能否用来判断两个字符串是否相等?

#include<iostream>usingnamespacestd;classstore{public:<br>charID[20];<br>}s[50];class... #include <iostream>
using namespace std;
class store
{public:<br>char ID[20];<br>}s[50];
class find
{public:<br>char d[20]; <br>}f[50];void main()
{int i=0,n=5;<br> cin>>s[i].ID;<br> <br> cin>>f[1].d;<br> <br> for(i=0;i<n;i++)<br> {<br> cout<<s[i].ID;<br> if ((s[i].ID) == (f[1].d) ) <br> { <br> cout<<"right"<<endl; <br> }
if ((s[i].ID) != (f[1].d) )
{
cout<<"不对!"<<endl;
}
}
} 请问这段代码 ``我想验证s[i].ID和 f[1].d 里存的字符串是否相等 可是不管我怎么输入 即使是前后一模一样,它都显示 “不对!”?
有没高手会的指点下啊? 是不是不能用 if语句判断那两个是否相等?如果不能,请问要怎么才能判断那两个是否相等?
展开
 我来答
匿名用户
2013-07-04
展开全部
s[i].ID == f[1].d
你这样是比较这两个字符串的地址是否相同
c风格字符串,也就是0结尾字符串的比较要借助strcmp
如果strcmp( s[i].ID, f[1].d ) == 0则说明他们两个相等
你那样做是不行的

另外可以使用标准库的string

#include <string>

std::string a = "123";
std::string b = "123";
if ( a == b ) {...} // 这里就可以直接用==来比较了,因为string重载了==,以比较两个字符串的内容是否相同

使用strcmp需要包含头文件cstring或者string.h
匿名用户
2013-07-04
展开全部
在C中是可以的,但是在C++中好像不行,我也不晓得,我印象中我一次C++实训中就是出现你这种情况。换种方法吧,头文件中加#include"string.h",然后在if()括号里的表达式为:strcmp(s[i].ID,f[1].d)==0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-04
展开全部
s[i].ID 置为空 应该使用 memset(s[i].ID,0,sizeof(s[i].ID));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-04
展开全部
if(strcmp(s[i].ID, f[1].d)==0) 相等else 不相等
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式