C++ 比较C++; 使用名称空间std; #包括 int main() { int n,i,j; int b[10]; 字符a[50][50]; cout

C++ 比较C++; 使用名称空间std; #包括 int main() { int n,i,j; int b[10]; 字符a[50][50]; cout,c++,C++,无法比较这样的字符数组。此比较运算符本质上是比较两个不相同数组的地址 为什么不直接使用memcmp(或memicmp-for case insesetive)或者更好地使用STD::String?< P>数组类型对象是C++中的二等公民。例如,比较两个数组与=< /C> >将不比较数组对象本身,而是将指针与每个数组的第一个元素进行比较。e相同的数组对象(因为它们的第一个元素具有相同的地址) 如果要比较C样式字符串(即,char的以null结尾的数组),则需要使用 但是,我建议改为使用for您的字

无法比较这样的字符数组。此比较运算符本质上是比较两个不相同数组的地址


为什么不直接使用memcmp(或memicmp-for case insesetive)或者更好地使用STD::String?

< P>数组类型对象是C++中的二等公民。例如,比较两个数组与<代码>=< /C> >将不比较数组对象本身,而是将指针与每个数组的第一个元素进行比较。e相同的数组对象(因为它们的第一个元素具有相同的地址)

如果要比较C样式字符串(即,
char
的以null结尾的数组),则需要使用


但是,我建议改为使用for您的字符串。它们更易于处理-它们允许与
==
(以及许多其他有用的函数)进行比较不要期望您对字符串设置任意的50个字符限制。

我郑重建议将
using
子句完全移出此文件;至少在include文件之后移动它。如果您的编译器没有警告您使用匿名名称空间,那么它的工作做得不太好。谢谢您的建议…真的很有帮助……但问题是作业中没有使用字符串
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;
}