【发布时间】:2010-11-20 15:46:25
【问题描述】:
在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 在我看来应该总是相等的或者函数返回一个等于true 的int (string::compare 返回值 0 (false) 表示相等的字符串)。它是否正确?如果不是,您能否提供一个示例,说明如果比较不等长度 (n1 != n2),则比较将是 false?
谢谢!
【问题讨论】:
-
等等,
int等于false吗? -
@icecrime:
int可以轻松转换为bool,这就是您可以将if与strcmp等一起使用的方法。 -
是的,但就像
strcmp一样,compare不返回布尔值,而是返回一个整数(就像它说的那样)。对于相等的字符串,compare返回一个整数值 0,在布尔上下文中计算为false。 -
@eq: 好吧,我错了,不过
a.compare(b)可以测试字符串相等性。 -
@ruvenb: 刚刚从我这周使用的代码中删除了这样的用法,它肯定不如
a == b清晰,因此我真的觉得compare在你真正关心的时候更好用订购。