字符串比较返回值(Is用于对字符进行排序的应用程序?)

String Comparison return value (Is is used in applications that sorts characters ?)

本文关键字:排序 应用程序 字符 返回值 比较 Is 用于 字符串      更新时间:2023-10-16

当我们使用strcmp(str1, str2);str1.compare(str2);时,str1<str1==str2或str1>str2。

问题是,它这样定义是出于特定的原因吗?例如,在二叉树排序算法中,我们将较小的值推送到左边的子级,将较大的值推到右边的子级。这个strcmp或字符串::compare函数似乎非常适合这一点。但是,有人使用字符串匹配来对树进行排序吗(整数索引更容易使用(?

那么,三个返回值(-1,0,1(的实际用途是什么呢。为什么它不能只返回1表示真,0表示假呢?

感谢

拥有三个返回值的目的正是它看起来的样子:一次回答所有关于字符串比较的问题。

每个人都有不同的需求。有些人有时需要一个简单的测试;strncmp提供了这一点。有些人需要平等测试;strncmp提供了这一点。有些人确实需要知道两条线之间的全部关系;strncmp提供了这一点。

你绝对不希望有人写下这样的话:

if(strless(lhs, rhs))
{
}
else if(strequal(lhs, rhs))
{
}

这需要进行两次可能代价高昂的比较操作。strless也知道它们是否相等,因为它必须到达两个字符串的末尾才能返回不小于。

哦,仅供参考:返回值不是-1或+1;它大于零或小于零。或者零,如果它们相等。

这对于了解所有三种情况都很重要的某些情况很有用。当您只关心布尔比较时,请将operator<用于string

可以,但您需要多个函数来进行排序和比较。由于strcmp((返回更小、相等或更大的值,您可以很容易地使用它们进行比较和排序。

请记住,BST并不是您想要比较字符串的唯一地方。您可能需要对名称列表或类似的内容进行排序。此外,在树中使用字符串作为关键字也很常见。

正如其他人所说,将字符串与<>==进行比较是有实际目的的影响。例如指定给字符串的固定长度数字将正确解析;即:"312235423">"312235422"。在某些情况下,这是有用的。

然而,您所要求的功能,对于解决方案的true/false,仍然适用于给定的返回值。

if (-1)
  {
     // resolves true
  }
else if (1)
  {
     // also resolves true
  }
 else if (0)
  {
    // resolves false
  }