c++ - string::compare 多余的参数?

标签 c++ stl

C++ reference on string::compare ,有以下重载:

int compare ( size_t pos1, size_t n1, const string& str, size_t pos2, size_t n2 ) const;

它有两个参数 n1n2 在我看来应该总是相等的或者函数返回一个 int 等于 true(string::compare 返回值 0(false)表示相等的字符串)。这个对吗?如果不是,您能否提供一个示例来说明如果比较的长度不等 (n1 != n2),则比较结果为 false

谢谢!

最佳答案

in my eyes should always be equal or the function returns an int equal to false

比较是一种三值比较:负/零/正是返回值的重要类型,而不仅仅是真/假。如果字符串 相等,它返回一个等于 false 的 int,否则不返回。

如果您对不同长度的(子)字符串进行词法排序,compare 会告诉您它们的顺序。

如果您只关心(子)字符串是否相等,那么不同的长度意味着不相等。作为优化,如果 n1 != n2,您可以跳过调用 compare

关于c++ - string::compare 多余的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4233549/

相关文章:

c++ - SYCL 异常捕获 : Error: [ComputeCpp:RT0101] Failed to create kernel ((Kernel Name: SYCL_class_multiply))

c# - 如何在我的程序的开始菜单中创建一个菜单?

c++ - c 样式链表和 c++ std::vector 的速度差异很大

c++ - 双端队列有下标运算符的原因是什么?

c++ - 如何将大括号括起来的初始化列表传递给函数?

C++ STL 数据结构常量时间推送/弹出/通过索引随机访问元素的可靠指针

c++ - 在 Stroustrup 的 PPP 书第 12 章的练习中正确使用 shared_ptr 和 make_shared

c++ - 如何在循环中访问数组对象的成员函数

c++ - 使用 2 个参数堆叠 STL

c++ - CT与MRI读数