C ++:比较字符串词典

时间:2012-04-08 20:40:51

标签: c++ string comparison lexicographic

使用覆盖bool operator<(const std::string & rhs)运算符时字符串是否与字典相比较?例如:

std::string str1 = "aabbcc"
std::string str2 = "bbaacc"

(str1 < str2) == std::lexicographical_compare(str1.begin(),str1.end(),str2.begin(),str2.end()) // is this statement true?

1 个答案:

答案 0 :(得分:6)

字符串的比较运算符是根据其traits::compare(即char_traits<char>::compare)(C ++ 03 21.3.6.8)定义的,它被指定为根据其参数的字典顺序返回值(21.1.1)。

  

X :: compare(p,q,n)... yield:如果对于[0,n)中的每个i,则为0;     X :: eq(p [i],q [i])为真;否则,消极     如果,对于[0,n]中的某些j,     X :: lt(p [j],q [j])为真,对于每个i in     [0,j)X :: eq(p [i],q [i])为真;否则是正值。

实际上,这意味着比较字符串不能是区域设置敏感的(在某些区域设置中可能是非词典的,例如我的。)