C++:比较字符串词典
C++: Comparing strings lexicographical
使用覆盖的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?
是的。
字符串的比较运算符是根据其traits::compare
(即char_traits<char>::compare
)(C++03 21.3.6.8)定义的,该运算符被指定为基于其参数的字典顺序(21.1.1)返回值。
X::compare(p,q,n) ... 产量:如果对于 [0,n] 中的每个 i,则为 0, X::eq(p[i],q[i]) 为真;否则,否定 值,如果,对于 [0,n] 中的某些 j, X::lt(p[j],q[j]) 为真,对于每个 i [0,j)X::eq(p[i],q[i]) 为真;否则为正值。
实际上,这意味着比较字符串不得区分区域设置(在某些区域设置中可能是非字典编纂的,例如我的)。
相关文章:
- 为什么字符串比较的 == 运算符相对于任一字符串长度线性时间(似乎)?
- 字符串比较中的意外输出
- 如何执行不区分大小写的字符串比较?
- 使用 getline(cin, var) 两次在进行字符串比较时会产生错误 (==)
- <<运算符优先级与字符串比较
- ">"运算符和"<"运算符如何进行字符串比较?
- Qt C++11 字符串通过子字符串比较列出交集
- std::out_of_range字符串比较中的异常
- 我正在尝试从输入文件中读取,然后使用它们的子字符串比较字符串的特定部分
- 字符* 与uint8_t的字符串比较
- 用字符串 c++ 比较对向量的元素
- 使用循环进行词典字符串比较
- 如何为C++映射创建自己的字符串比较对象
- 不带比较()的字符串比较
- 与 IF 语句C++的字符串比较?
- 字符串比较在与变量一起使用时给出不同的输出
- 更快的字符串比较排序,用于唯一()
- C 字符串比较“祝您好运”&gt;“再见”
- C 奇怪的行为和字符串比较
- 子字符串与 std::memcmp 或字符串::比较的比较