我了解下面的代码正在输出布尔值问题的结果,但我不明白为什么它输出1和0而不是1和1。
#include <iostream>
using namespace std;
int main()
{
string d = "abc", e = "abc";
char a[] = "abc", b[] = "abc";
cout << (d == e);
cout << (a == b);
return 0;
}
//outputs 10
我还尝试输出存储在变量a和b中的值,并且两者都得到相同的值
#include <iostream>
using namespace std;
int main()
{
string d = "abc", e = "abc";
char a[] = "abc", b[] = "abc";
cout << (d == e);
cout << (a == b);
cout << "\n" << a << "\n";
cout << b;
return 0;
}
// outputs 10
//abc
//abc
答案 0 :(得分:2)
在C语言中,std::string
有一个特殊的operator==
,可以实际上比较字符串。与您可能会读到的相反,std::string
与字符数组不等效。 Char数组实质上被视为指针,因此==
比较不同的内存地址,因此程序将输出0
。
答案 1 :(得分:1)
要比较2个char数组,应使用strcmp,==运算符将比较指针地址而不是值本身。您还可以迭代数组并逐元素比较。