假设你想用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
在简单和速度方面,它可能是最好的。