知道为什么我会因为这段代码而得到“Maya 不是 Maya”吗?
if ("Maya" == "Maya")
printf("Maya is Maya \n");
else
printf("Maya is not Maya \n");
最佳答案
因为您实际上是在比较两个指针 - 使用例如改为以下之一:
if (std::string("Maya") == "Maya") { /* ... */ }
if (std::strcmp("Maya", "Maya") == 0) { /* ... */ }
这是因为 C++03,§2.13.4 说:
An ordinary string literal has type “array of n
const char
”
...在您的情况下,适用于指针的转换。
另见 this question在这种情况下,为什么不能为 ==
提供重载。
关于c++ - 为什么 ("Maya"== "Maya") 在 C++ 中不是真的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3303164/