【发布时间】:2021-03-18 13:35:54
【问题描述】:
我目前正在尝试对向量中的字符串进行排序,但我不确定如何以特定方式进行。我正在使用的游戏引擎要求对字符串进行不区分大小写的排序(我已经能够完成)。它还会对这些文件名进行排序,下划线位于字母之前。
例如,这些字符串目前排序如下:
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
有谁知道如何以这种方式对向量中的字符串进行排序?
【问题讨论】:
-
除此之外,为什么需要对这个文件名列表进行排序?为什么你想要它们的顺序特别,这个顺序应该解决什么问题?
-
一种可能性是创建字符串对,第一部分对应于下划线之前的名称,第二部分对应于下划线之后。然后借助这些对和专用 lambda 函数对原始字符串进行排序
-
std::sort做你想做的事。如果不符合您的要求,您应该给出排序规则或者您需要自己创建。 -
@Someprogrammerdude 我正在修改的游戏对这些字符串在我正在创建的文件存档中列出的顺序非常挑剔。当我从外部驱动器上的文件生成存档时,我意识到了这一点。由于某种原因,这些文件最终被正确排序(可能是按创建日期?这些文件是从游戏的原始文件档案之一中按顺序转储的)。当我尝试将新文件添加到存档中时,这些文件被放在列表的末尾,而不管它们的名称。游戏不会加载新文件,所以我认为字符串顺序很重要