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