微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c++ string::compare() fn 的意外行为

如何解决c++ string::compare() fn 的意外行为

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,s2);

第一种情况下的 O/P 为 0(预期),但在第二种情况下产生 -1(意外)。 fn 调用转换为将 s1 的前 5 个字符与 s2 的那些字符进行比较。那么,输出如何受到 s2 的第 6 个字符的影响。有人可以解释一下这种实现背后的原因吗?一个标准库 fn。

解决方法

in cppreference所述:

  1. 将此字符串的 [pos1,pos1+count1) 子字符串与 str 进行比较。如果 count1 > size() - pos1 子串是 [pos1,size()).

没有说第二个字符串的大小。这意味着比较整个 string2。所以一切都在预料之中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。