在C++ reference on string::compare
,有以下重载:
int compare ( size_t pos1, size_t n1, const string& str, size_t pos2, size_t n2 ) const;
它有两个参数 n1
和 n2
在我看来应该总是相等的或者函数返回一个 int
等于 true
(string::compare 返回值 0(false)表示相等的字符串)。这个对吗?如果不是,您能否提供一个示例来说明如果比较的长度不等 (n1 != n2
),则比较结果为 false
?
谢谢!
最佳答案
in my eyes should always be equal or the function returns an int equal to false
比较是一种三值比较:负/零/正是返回值的重要类型,而不仅仅是真/假。如果字符串 相等,它返回一个等于 false 的 int,否则不返回。
如果您对不同长度的(子)字符串进行词法排序,compare
会告诉您它们的顺序。
如果您只关心(子)字符串是否相等,那么不同的长度意味着不相等。作为优化,如果 n1 != n2
,您可以跳过调用 compare
。
关于c++ - string::compare 多余的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4233549/