string1 == string2 和你自己的for循环比较有什么区别?

What is the difference between string1 == string2 and your own for-loop comparison?

假设您想在 C++ 中比较两个字符串以查看它们是否相同。除了打字少之外,下面还有什么区别吗?一个比另一个快吗?有没有比此处包含的更好的比较字符串的方法?

版本 A: if( string1 == string2 ) { return true; }

版本 B:

// Check for equal length, then...
for( int i = 0; i < string1.length(); ++i ) {
    if( string1[i] != string2[i] ) { return false; }
}
return true;

Is there any difference between the following?

是的。您的代码不检查字符串的长度,因此如果第一个字符串比第二个字符串长,您最终可能会读到第二个字符串的末尾。如果第一个字符串是第二个字符串的正确前缀,则您的代码 returns 是错误的结果。

Is one faster than the other?

使用标准库函数可能与您自己的函数相同或更快,因为可以更好地优化标准库函数。例如,== 运算符可能会使用 std::memcmp 一次比较多个字符。

Is there a better way to compare the strings than what is contained here?

不,不是真的。 string1 == string2 在简单性和速度方面可能是最好的。