我知道compare方法将返回一个整数值,表示两个字符串之间的差异(如果匹配则为0)。我的问题是,如果发现不匹配,它是否会在不匹配时停止比较,或者在指定之前完成比较?
它取决于编译器还是标准?我目前正在使用gcc 4.1.2
答案 0 :(得分:3)
嗯,标准并不关心,但比较的结果 - 标准只关心它 - 完全取决于第一个不匹配的字符。所以比较其他实现对于任何实现来说都是毫无意义的,除非可能更多的字符,如果它更容易处理缓存或平台的字大小。
答案 1 :(得分:1)
未指定。
标准规定rhs.compare(lhs)
等同于char_traits::compare(&rhs[0], &lhs[0], min(rhs.size(), lhs.size())
。 char_traits::compare
被描述为丢弃经过不匹配的字符比较值,但它是否实际读取字符不再详述。