检查while循环时,'operator!='不匹配

时间:2013-10-25 08:54:54

标签: c++

struct dic
{
    string key;
    int code;
};
dic H[71];

现在在key - 语句的条件下使用while会给我一个错误。

while ((H[h].key)!= NULL)
{

}

我得到的错误是:

error: no match for 'operator!=' in 'H[h].dic::key != 0'

4 个答案:

答案 0 :(得分:1)

dic::key的类型为string,您试图将其与未实现的整数(NULL == 0)进行比较。您需要检查字符串是否为空:

while (!H[h].key.empty()) {
   ...
}

答案 1 :(得分:0)

元素的键是一个字符串。您无法将字符串与NULL进行比较,因为它是一个对象而不是一个指针。宏NULL很可能被定义为指针或int值,并且这两者都不能与字符串相比。

答案 2 :(得分:0)

NULL通常定义为0(void *) 0,与std::string比较时,不能使用这些值(当然,除非你实现你自己的自定义比较运算符,你不应该这样做。

如果要检查字符串是否为空,请使用std::string::empty

答案 3 :(得分:0)

也许你想说:

if (H[h].key.empty()) { ... }