相关疑难解决方法(0)

如何在c ++中实现自然排序算法?

我正在排序由文本和数字组成的字符串.我希望排序将数字部分排序为数字,而不是字母数字.

例如,我想要:abc1def,...,abc9def,abc10def

而不是:abc10def,abc1def,...,abc9def

有谁知道这个算法(特别是在c ++中)

谢谢

c++ sorting natural-sort

17
推荐指数
3
解决办法
1万
查看次数

如何在C中按顺序对数字和字母排序文件名?

我使用以下代码按字母顺序对文件进行排序,并对文件进行排序,如图所示:

for(int i = 0;i < maxcnt;i++) 
{
    for(int j = i+1;j < maxcnt;j++)
    {           
        if(strcmp(Array[i],Array[j]) > 0)
        {            
            strcpy(temp,Array[i]);      
            strcpy(Array[i],Array[j]);      
            strcpy(Array[j],temp);    
        }    
    } 
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但我需要按照Windows资源管理器中的顺序对其进行排序

在此输入图像描述

怎么这样排序?请帮忙

c c++ sorting

12
推荐指数
4
解决办法
6980
查看次数

C++字符串排序就像一个人?

我想按照人类对它们进行排序的方式对字母数字字符串进行排序.即,"A2"出现在"A10"之前,"a"肯定出现在"Z"之前!没有编写迷你解析器,有什么办法吗?理想情况下,它也会将"A1B1"放在"A1B10"之前.我可能的答案中看到了"Microsoft SQL 2005中的自然(人类字母 - 数字)排序"这一问题,但它使用了各种库函数,"使用IComparer为人类排序字符串"也是如此.

以下是目前失败的测试用例:

#include <set>
#include <iterator>
#include <iostream>
#include <vector>
#include <cassert>

template <typename T>
struct LexicographicSort {
  inline bool operator() (const T& lhs, const T& rhs) const{
    std::ostringstream s1,s2;
    s1 << toLower(lhs); s2 << toLower(rhs);
    bool less = s1.str() < s2.str();
    //Answer: bool less = doj::alphanum_less<std::string>()(s1.str(), s2.str());
    std::cout<<s1.str()<<" "<<s2.str()<<" "<<less<<"\n";
    return less;
  }

  inline std::string toLower(const std::string& str) const {
    std::string newString("");
    for (std::string::const_iterator charIt = str.begin();
         charIt!=str.end();++charIt) { …
Run Code Online (Sandbox Code Playgroud)

c++ sorting string comparator

9
推荐指数
1
解决办法
4956
查看次数

使用数字对std :: strings进行排序?

我目前正在使用std :: string <运算符进行排序.问题在于:

30 <9.30显示在9 <9之前,Windows 9x有此问题.我怎样才能在数字上对它们进行排序,以便在"9只狗"之后出现"30只狐狸".我还应该补充一点,我正在使用utf 8编码.

谢谢

c++ sorting string

9
推荐指数
1
解决办法
2万
查看次数

标签 统计

c++ ×4

sorting ×4

string ×2

c ×1

comparator ×1

natural-sort ×1