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