string :: compare是否可靠,以确定字母顺序?

时间:2009-12-06 06:02:38

标签: c++ string

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

因此,如果结果为0,则为stringA.compare(stringB),如果为负,则它们是相同的,stringA按字母顺序排在stringB之前,如果是正数,则stringA会在之后?

5 个答案:

答案 0 :(得分:8)

根据cplusplus.com上的文档,

  

如果全部,则成员函数返回0   比较中的人物   内容比较相等,为负数   如果是第一个字符的值   不匹配比较少   对象比比较字符串,   和相反的正值   情况下。

因此它将按ASCII顺序对字符串进行排序,对于同一案例的英文字符串(没有变音符号或其他扩展字符)将按字母顺序排列。

答案 1 :(得分:3)

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

compare是一个成员函数,所以你可以这样称呼它:

stringA.compare(stringB);

答案 2 :(得分:2)

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

对于std::string,排序将是实现(编译器)的默认字符代码的顺序,通常是ASCII顺序。如果您需要不同的顺序(假设您要将{a,á,à,â}视为等效),则可以使用自己的basic_string实现来实例化char_traits<>。提供不同的compare函数指针。

答案 3 :(得分:0)

yes

  

如果全部,则成员函数返回0   比较中的人物   内容比较相等,为负数   如果是第一个字符的值   不匹配比较少   对象比比较字符串,   和相反的正值   情况下。

     

对于字符串对象,a的结果   字符比较仅取决于   它的字符代码(即其ASCII码   代码),所以结果有限   按字母顺序或数字排序   含义。

答案 4 :(得分:0)

C和C ++语言的规范保证了词汇排序,'A'&lt; 'B'&lt; 'C'......&lt; 'Z'。对于小写也是如此。

文本数字的排序也得到保证:'0'&lt; ......&lt; '9'。

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