string1 == string2和自己的for-loop比较有什么区别?

问题描述 投票:0回答:1

假设你想用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;
c++ string-comparison
1个回答
7
投票

下面的内容有什么不同吗?

是的,你的代码没有检查字符串的长度,所以如果第一个字符串比第二个字符串长,你可能最终会读过第二个字符串的末端。如果第一个字符串是第二个字符串的正确前缀,你的代码会返回错误的结果。

一个比另一个快吗?

使用标准库函数很可能会和你自己的函数相同或更快,因为标准库函数可以得到更好的优化。例如 == 操作者可使用 std::memcmp 来比较一次多个字符。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.