我不明白为什么以下代码会给我一个编译错误:
string a = NULL:
if (a == NULL) <<<<<<<<<<<<<<<<<< something is wrong with this line????
{ /* do something */ }
这给出了:
error: no match for ‘operator!=’ in ‘a != 0l’
答案 0 :(得分:2)
if (a == NULL)
无法正常工作,因为您要将std::string
与不可能的整数进行比较。如果你想创建一个空字符串并测试空虚,请执行以下操作:
string a;
if (a.empty())
{ /* do something */ }
答案 1 :(得分:0)
string
与C中的字符串不同。您需要将字符串与字符串进行比较a == string ("")
。
答案 2 :(得分:0)
仅仅从这一点来看,第一行末尾的冒号而不是分号肯定会在那里抛出一把扳手。不确定是不是,但我会从那里开始。
答案 3 :(得分:0)
只需初始化为带双引号的空字符串,并检查字符串是否为空。 或者是否必须使用NULL?
string a = "";
if (a == "")
{ /* dosomething */ }