比较 C++ 中的二维字符数组

Comparing 2-D char array in C++

本文关键字:二维 字符 数组 C++ 比较      更新时间:2023-10-16
using namespace std;
#include<iostream>
int main()
{
    int n,i,j;
    int b[10];
    char a[50][50];
    cout<<"Dictionaryn";
    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]='rohan' amd a[j]='rohan' 但也一样,但它并不相等......对于初始化,我只能使用字符

数组类型对象在C++中是二等公民。例如,将两个数组与==进行比较不会比较数组对象本身。相反,它将比较指向每个数组的第一个元素的指针。这样,如果两个数组是相同的数组对象,则它们只会与==相等(因为这样它们的第一个元素具有相同的地址(。

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

但是,我建议改用std::string作为字符串。它们更容易处理 - 它们允许与==(以及许多其他有用的函数(进行比较,并且不希望您对字符串设置任意 50 个字符的限制。

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

为什么不直接使用 memcmp(或 memicmp - 用于大小写(,甚至更好地使用 std::string?