C++ 检查数组中的字符串是否为空时出错

C++ 检查数组中的字符串是否为空时出错,c++,string,pointers,struct,hashtable,C++,String,Pointers,Struct,Hashtable,我正在设置一个哈希表,并且我已经计算了密钥,并且想要确定数组中的那个点是否已经包含了某些内容。我想我应该检查一下它是否为空,看看这个空间是空的还是被删除了。del.compare用于检查名字字符串是否已替换为“del”,这就是我标记已删除并准备重写的元素的方式 我得到一个错误: 错误:与“operator!=”不匹配在“((学生*)这个)->Student::studentList+((无符号整数)((学生*)这个)->Student::key)*20u”)->Student::studentE

我正在设置一个哈希表,并且我已经计算了密钥,并且想要确定数组中的那个点是否已经包含了某些内容。我想我应该检查一下它是否为空,看看这个空间是空的还是被删除了。
del.compare
用于检查名字字符串是否已替换为
“del”
,这就是我标记已删除并准备重写的元素的方式

我得到一个错误:

错误:与“operator!=”不匹配在“((学生*)这个)->Student::studentList+((无符号整数)((学生*)这个)->Student::key)*20u”)->Student::studentEntry::FIRST!=0'

对于这一行:

if(studentList[key].FIRST!=NULL | | del.compare(studentList[key].FIRST)!=0)

使用
有什么问题=在这种情况下

编辑关于删除。比较

我只是使用字符串库比较,在本例中,
del
在函数中初始化:

string del(“del”)

studentList[key]。第一个
对应于指向字符串结构的指针,初始化为
10
studentList[0]。FIRST
应该是
10
数组中第一个条目的名字,并且应该为空

下面是我在构造函数中声明它的方式:

studentList=newstudententry[10]

首先编辑关于
的内容

FIRST
studentry
结构中的
Students
类中声明。这部分看起来像:

class Student
{
    private:    
        struct studentEntry
        {
            string FIRST; 
        };
        studentEntry *studentList;
        int key;
        int index;

    public:
        void add(string &firstname);
        Student();
};
这是
Student
类的构造函数,可能也与此相关:

Student::Student()
{
    studentList = new studentEntry[10];
    key = 0;
    index = 0;  
}
编辑关于
添加

以下是导致错误的比较的
add
函数:

void Student::add(string &firstname)
{       
    string del("DEL");

    //find key to know which bucket to use
    key = index % 10;

    //check if spot in studentList is empty or has been removed
    if(studentList[key].FIRST != NULL || del.compare(studentList[key].FIRST) != 0)
    {
        //do stuff
    }
}
编译器说,
del.compare
的结果与0不可比

您还没有显示关于
del.compare
的任何内容,因此无法进行更多说明

目前缺少第一个
声明


稍后–
第一个
现在显示为一个
字符串
,可能是一个
std::string

无法将
std::string
与0或
nullptr
进行比较


但是你可以将它的
length()
与0进行比较。

我更新了这个问题,对不起,我以为问题出在
|
@manalishi的前半部分:显然当时我的答案是错的。请展示一个完整的小示例程序。好的,我首先添加了关于
的更多信息,以及我使用的类和构造函数Hanks,就是这样。将其更改为
studentList[key].FIRST.length()!=0