永发信息网

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

答案:4  悬赏:70  手机版
解决时间 2021-04-15 23:23

#include <iostream>
using namespace std;


class store
{public:
char ID[20];
}s[50];
class find
{public:
char d[20];
}f[50];

void main()
{int i=0,n=5;
cin>>s[i].ID;

cin>>f[1].d;

for(i=0;i<n;i++)
{
cout<<s[i].ID;
if ((s[i].ID) == (f[1].d) )
{
cout<<"right"<<endl;
}
if ((s[i].ID) != (f[1].d) )
{
cout<<"不对!"<<endl;
}
}
} 请问这段代码 ``我想验证s[i].ID和 f[1].d 里存的字符串是否相等 可是不管我怎么输入 即使是前后一模一样,它都显示 “不对!”?
有没高手会的指点下啊? 是不是不能用 if语句判断那两个是否相等?

如果不能,请问要怎么才能判断那两个是否相等?

最佳答案
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
全部回答
s[i].ID 置为空 应该使用 memset(s[i].ID,0,sizeof(s[i].ID));

在C中是可以的,但是在C++中好像不行,我也不晓得,我印象中我一次C++实训中就是出现你这种情况。

换种方法吧,头文件中加#include"string.h",然后在if()括号里的表达式为:strcmp(s[i].ID,f[1].d)==0

if(strcmp(s[i].ID, f[1].d)==0)

相等

else

不相等

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
1100-1300的诺基亚的手机那个好?
MP3 开不了机 连电脑也没反应
这台3000块的电脑配置,玩玩一般游戏,能混个
冒险岛剑客的挂机地点
QQ在另一个地方登陆了,怎么查登陆地方?
四川车行无疆远征俱乐部怎么去啊,有知道地址
结转剩余流量怎么使用,蚂蚁花呗!这个月我只
找回爱情!
求AVA激活码?可以的留下QQ
我到底是白羊座还是金牛座·?
谁帮我找下这个表情是哪个动画的还是什么表情
谁可以给我一个清晰的网球场的图形要田子牌的
移民村奶食店我想知道这个在什么地方
炫舞什么时候出抓猪模式
删掉的好友还会偷菜?
推荐资讯
公牛轮胎集宁地区总代理地址在哪,我要去那里
回收十字绣吗
和清明有关的诗词,有关清明的诗词和句子?
怎么提高免疫力?
我想买个电脑,(主要用于制图和看电影,)买
擦身而过的都是陌生人吗?
谁能给我个正版传奇的号,50级以上的?最好能
腹部右上方隐痛经常打嗝是什么原因
大专毕业生英教上岗证考什么
做什么事挣钱多啊!
云南人羞花化妆品公司我想知道这个在什么地方
真有天长地久吗?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?