python、c++、c#和j中字符串比较的差异

2024-06-26 10:02:03 发布

您现在位置:Python中文网/ 问答频道 /正文

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

在Java中,我看到了这样的解释:

== tests for reference equality (whether they are the same object).
.equals() tests for value equality (whether they are logically "equal").

在c中,我看到了以下代码:

^{pr2}$

对我来说,“==”是检查地址,而.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);
            }
        }

或者

            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;
            }

这些代码将成功编译并获得正确的值比较结果。我知道c++中有一个strcmp()函数,但我很少使用它,也不知道在检查两个字符串的值是否相等时,应该使用它而不是==函数。在

所以我的问题是,这是因为这些编程语言之间存在差异,还是我很幸运没有遇到这些错误?在


Tags: to字符串fromfalsetrueforiftests
2条回答

Python按字典顺序比较字符串,即使用字符的ASCII值,因此可以使用==运算符。Java创建了一个string对象,因此您必须使用.equals()方法来检查值。在

所以要回答你的问题,语言是不同的。如果您试图比较C++中的2个字符串,我将使用^ {CD3}方法。在

因为Java不允许运算符重载,所以他们不得不创建一个函数(Equals)来比较“true”对象的相等性,并让运算符==来执行指针比较。这种选择并不能被任何其他原因所证明,因为它保证了不符合逻辑的代码,在一般情况下输入更多的内容(人们通常比较真正的相等,而不是指针相等)和更陡峭的学习曲线。在

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

相关问题 更多 >