using namespace std;
#include<iostream>
int main()
{
int n,i,j;
int b[10];
char a[50][50];
cout<<"Dictionary\n";
cout<<"Enter the no. of enteries you want to enter:";
cin>>n;
// Function 1 & 2 : To add keys and values
for(i=0;i<n;i++)
{
cout<<"Enter the name:";
cin>>a[i];
for(j=0;j<i;)
{
if(a[j]==a[i])
{
cout<<"no";
cin>>a[i];
}
else
{
j++;
}
}
cout<<"Enter the marks:";
cin>>b[i];
}
return 0;
}
如果我们输入2个条目...同名...那么为什么它不会进入if(a[i]==a[j])
???
就像a [i] =&#39; rohan&#39; amd a [j] =&#39; rohan&#39;它也不会相等....初始化我只能使用char
答案 0 :(得分:3)
数组类型对象是C ++中的二等公民。例如,将两个数组与==
进行比较将不会比较数组对象本身。相反,它会将指针与每个数组的第一个元素进行比较。这样,如果两个数组是相同的数组对象,那么它们只会与==
进行比较(因为它们的第一个元素具有相同的地址)。
如果要比较C风格的字符串(即char
的以空字符结尾的数组),则需要使用strcmp
。
但是,我建议您使用std::string
作为字符串。它们更容易处理 - 它们允许与==
(以及许多其他有用的函数)进行比较,并且不希望您对字符串设置任意50个字符的限制。
答案 1 :(得分:1)
您无法比较像这样的字符数组。该比较运算符实质上是比较两个不同的数组的地址。
为什么不使用memcmp(或memicmp - 用于不区分大小写)或甚至更好地使用std :: string?