1

我知道 compare 方法将返回一个整数值,表示两个字符串之间的差异(如果匹配,则为 0)。我的问题是,如果发现不匹配,它会在不匹配时停止比较还是在指定之前结束?

它取决于编译器还是标准?我目前正在使用 gcc 4.1.2

4

2 回答 2

3

好吧,标准并不关心,但比较的结果——标准只关心这一点——完全取决于第一个不匹配的字符。因此,比较其他的对于任何实现来说都是毫无意义的,如果更容易处理平台的缓存或字长,可能会增加几个字符。

于 2012-09-04T20:02:53.413 回答
1

未指定。

标准规定rhs.compare(lhs)相当于char_traits::compare(&rhs[0], &lhs[0], min(rhs.size(), lhs.size()). char_traits::compare被描述为丢弃不匹配后的字符比较值,但它是否实际读取字符不再详细说明。

于 2012-09-04T20:05:39.253 回答