我目前正在尝试对 vector 中的字符串进行排序,但我不确定如何以特定的方式进行排序。我正在使用的游戏引擎要求对字符串进行不区分大小写的排序(我已经能够完成)。它还对这些文件名进行排序,并在字母之前添加下划线。
例如,这些字符串当前排序如下:
ChallengeBattleships.bsf
ChallengeBattleships.zip
ChallengeBattleshipsPause.bsf
ChallengeBattleshipsSummary.bsf
ChallengeBattleshipsSurface.bsf
ChallengeBattleships_arena.bsf
ChallengeBattleships_day.zip
但我需要它们像这样排序(以及不区分大小写):
ChallengeBattleships.bsf
ChallengeBattleships.zip
ChallengeBattleships_arena.bsf
ChallengeBattleships_day.zip
ChallengeBattleshipsPause.bsf
ChallengeBattleshipsSummary.bsf
ChallengeBattleshipsSurface.bsf
有人知道如何以这种方式对 vector 中的字符串进行排序吗?
最佳答案
将 std::sort 与 lambda 一起使用。 如果不修改原始字符串则:
std::sort(vec.begin(), vec.end(),
[](std::string s1, std::string s2){
std::transform(s1.begin(), s1.end(), s1.begin(),
[](char c){ return std::tolower(c); });
std::transform(s2.begin(), s2.end(), s2.begin(),
[](char c){ return std::tolower(c); });
return s1 < s2;
});
关于C++ - 以特定方式对 vector 中的字符串进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65178460/