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



>假设您想比较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;

以下有什么区别吗?

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

一个比另一个快吗?

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

有没有比包含的更好的方法来比较字符串 这里?

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

最新更新