代码之家  ›  专栏  ›  技术社区  ›  MPelletier

字符串::Compare是否可靠以确定字母顺序?

  •  8
  • MPelletier  · 技术社区  · 15 年前

    简单地说,如果输入总是相同的大小写(这里是小写),并且字符总是ASCII,那么可以使用string::compare来可靠地确定两个字符串的字母顺序吗?

    因此,与 stringA.compare(stringB) 如果结果是0,它们是相同的,如果是负的,字符串A按字母顺序排在字符串B之前,如果是正的,字符串A排在后面?

    5 回复  |  直到 13 年前
        1
  •  8
  •   Moishe Lettvin    15 年前

    根据cplusplus.com上的文件,

    如果全部返回,则成员函数返回0 比较中的字符 内容比较相等,为负 如果第一个字符 不匹配 对象,而不是在比较字符串中, 相反的是正值 案例。

    因此,它将按ASCII顺序对字符串进行排序,对于相同大小写的英语字符串(不带音调符号或其他扩展字符),它将按字母顺序排列。

        2
  •  3
  •   James McNellis    15 年前

    是的,只要两个字符串中的所有字符都是同一个大小写,并且只要两个字符串都只包含字母,就可以了。

    compare 是一个成员函数,因此您可以这样调用它:

    stringA.compare(stringB);
    
        3
  •  2
  •   David Rodríguez - dribeas    15 年前

    在C++中, string 是模板类的实例化 basic_string 使用默认参数: basic_string<char, char_traits<char>, allocator<char> > . 中的比较函数 基本字符串 模板将使用 char_traits<TChar>::compare 函数确定结果值。

    为了 std::string 顺序将是实现(编译器)的默认字符代码的顺序,通常是ASCII顺序。如果您需要不同的顺序(假设您想考虑a、_、_、_、_作为等效顺序),您可以实例化 基本字符串 用你自己的 char_traits<> 实施。提供不同的 compare 函数指针。

        4
  •  0
  •   aJ.    15 年前

    yes ,

    如果全部返回,则成员函数返回0 比较中的字符 内容比较相等,为负 如果第一个字符 不匹配 对象,而不是在比较字符串中, 相反的是正值 案例。

    对于字符串对象, 字符比较仅取决于 其字符代码(即 它的ASCII码 代码 )因此结果有一定的局限性。 字母或数字顺序 意义。

        5
  •  0
  •   Thomas Matthews    15 年前

    C和C++语言的规范保证了词汇排序,“a’& lt;‘b’& lt;‘c’…“Z”。小写也是如此。

    文本数字的顺序也得到保证:“0”<…‘9’。

    当使用多种语言时,许多人会创建一个字符数组。将搜索数组中的字符。不比较字符,而是比较索引。