Python、C++、C和java中字符串比较的差异

Python、C++、C和java中字符串比较的差异,java,c#,python,c++,string,Java,C#,Python,C++,String,似乎字符串比较不能简单地由==运算符完成,正如我从解释中读到的,在java和c中: 在Java中,我看到了以下解释: == tests for reference equality (whether they are the same object). .equals() tests for value equality (whether they are logically "equal"). 在c中,我看到了以下代码: if (parametrii[0].Equals("teach"))/

似乎字符串比较不能简单地由==运算符完成,正如我从解释中读到的,在java和c中:

在Java中,我看到了以下解释:

== tests for reference equality (whether they are the same object).
.equals() tests for value equality (whether they are logically "equal").
在c中,我看到了以下代码:

if (parametrii[0].Equals("teach"))// to check the equality of values
对我来说,==是地址检查,而.equal只是检查值,这是有道理的

但是我一直在使用Python和C++,并且我从来没有遇到过这样的错误,例如: 在python中:

string1 = "helloworld"
string2 = "helloworld"

print(string1 == string2)// result true
在c++中:

while(getline(ifs, line2)){
        stringstream ssm(line2);
        string from_stop;
        string to_stop;
        getline(ssm, from_stop, ',');
        getline(ssm, to_stop, ',');
        if(from_stop == to_stop){
            adjList[from_stop].push_back(to_stop);
            }
        }

这些代码将成功编译并获得比较值的正确结果。我知道C++中有一个STRCMP函数,但我很少使用它,而且不太知道何时使用它,而不是在检查两个字符串是否相等的时候使用。
所以我的问题是,这是因为这些编程语言之间存在差异,还是幸运的是我没有遇到这些错误?

Python以字典形式比较字符串,即使用字符的ASCII值,因此可以使用==运算符。Java创建一个string对象,因此必须使用.equals方法来检查值


所以要回答你的问题,语言是不同的。如果您试图比较C++中的2个字符串,我将使用比较方法。 由于Java不允许运算符重载,他们不得不创建一个函数Equals来比较'true'对象的相等性,并让运算符==来执行指针比较。这种选择不能由任何其他原因来证明,因为它保证了不符合逻辑的代码,在一般情况下,人们通常比较的是真正的相等,而不是指针相等和更陡峭的学习曲线


在指针和对象之间有明显区别的C++不受Java限制,因此允许类具有适当的值语义和直观的比较形式。

谁说==检查引用相等?情况并非总是如此。至少不在c@M.kazemAkhgary引用引用了Java,这是真的。如果您想知道==在不同语言中比较字符串时的作用,请查阅每种语言中该运算符的文档。它们都能准确地解释它所做的事情。这对我有很大帮助,你能给我一些C++中的简单例子吗?= =给你错误,而STD::String::比较Works= =不会给你一个错误。它将根据字符串返回布尔值。使用compare方法可以更好地了解字符串的不同之处。我建议你对C++如何工作进行研究:像往常一样,尊敬的下级选民解释他们的原因吗?我投票了,它帮助了我理解,欣赏了。你反对Java,有人可能不喜欢。备选案文2。在触摸屏上滚动时,有时可能会意外地点击投票按钮。这可能会导致意外的上升票和下降票的平均分布,但没有人询问随机上升票-
            bool stop124 = false;
            bool stopA24 = false;
            bool stop126 = false;
            for (int i = 0; i < adjVec.size(); i++) {
                if (adjVec[i] == "124") stop124 = true;
                else if (adjVec[i] == "A24") stopA24 = true;
                else if (adjVec[i] == "126") stop126 = true;
            }