使用覆盖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?
答案 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])为真;否则是正值。
实际上,这意味着比较字符串不能是区域设置敏感的(在某些区域设置中可能是非词典的,例如我的。)