string::compare()有一种重载形式,如下所示:
int compare (size_t pos, size_t len, const string& str) const;
现在考虑以下两种情况:
情况1:
string s1="steven", s2="steve";
cout<<s1.compare(0, 5,s2);
场景2:
string s1="steven", s2="stevec";
cout<<s1.compare(0, 5,s2);
第一种情况的输出为0(预期),但第二种情况的输出为-1(意外)。函数调用转换为比较s1的前5个字符和s2的前5个字符。那么,为什么s2的第6个字符会影响输出。有人可以解释一下标准库函数这样实现的原因吗?