c++ - 字符串的字典序比较[不区分大小写]

标签 c++ string sorting case-insensitive lexicographic

我想按字典顺序对文件的文本进行排序,但我无法理解字典顺序的真正作用。

排序字符串会产生另一个问题;关系运算符使用 ASCII 值,所以

betty < Diane应该为真时为假。

考虑一个示例列表: 贝蒂、黛安、123 岁、安娜、梅根、查尔斯,二岁,12 岁。

我如何按字典顺序设置它?

最佳答案

方法:

  1. 使用map <convert_to_lower_case(words) as string, index as integer>将所有单词放入列表中。
  2. 然后创建一个排序 vector myVec使用:

    for(it_type iterator = m.begin(); iterator != m.end(); iterator++) { myVec.push_back(original_list[it->second]); }

myVec是您要查找的按字典顺序排序的列表。 您需要实现 convert_to_lower_case(word) :

for(int i = 0; str[i]; i++){
  word[i] = tolower(str[i]);
}

其他答案也很好,使用比较器对 vector 进行排序。

关于c++ - 字符串的字典序比较[不区分大小写],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40446250/

相关文章:

ios - 如何访问ios7中的tableView单元格

c# - 快速图中的无向图表示

c++ - 我需要有关从 C++ 中的文件进行解析的帮助

python - 找不到 pyparsing 预期的字符串

c - 为什么我的第一个 gets() 不起作用?我有其中一些,但代码块总是忘记第一个?

Java:当 ConcurrentSkipListSet 的 Comparator (a, b) == 0 时会发生什么?

c++ - 使用 vector 的合并排序 C++

c++ - 在模板化类中重载 << 运算符会给我链接器错误 (C++)

c++ - 如何在给定 PID 的情况下隐藏进程的控制台?

c# - 如何检查字符串不包含字母和数字以外的任何字符?