我的列表响应了消息 LVN_COLUMNCLICK 对item 的内容进行降序排序,排列结果如下: 语言.txt
疑问.txt
最近学习.txt
新建文本文档.txt
已经修正的问题.txt
排序的算法如下:int MyListView::CompareFunction(LPARAM lParam1, LPARAM lParam2, LPARAM lParamData)
{
MyListView* pListCtrl = reinterpret_cast<MyListView*>(lParamData);
MyListItem* pItem1 = reinterpret_cast<KD_MyListItem*>( lParam1 );
MyListItem* pItem2 = reinterpret_cast<KD_MyListItem*>( lParam2 );
if (pListCtrl->m_iSortColumn == COLUMN_NAME)
{
CString str1(pItem1->GetListItemText(pListCtrl->m_iSortColumn));
CString str2(pItem2->GetListItemText(pListCtrl->m_iSortColumn));
if(pListCtrl->m_bAscSort)
return str1.CompareNoCase(str2);
else
return str2.CompareNoCase(str1);
}
}XP系统的列表(LVS_REPORT),对上面相同的文件名进行降序排序,排出的结果(如下), 最近学习.txt
语言.txt
已经修正的问题.txt
疑问.txt
新建文本文档.txt按照排列结果来看,文件是根据汉字的拼音来比较的,请问哪个大侠知道一些比较通用的比较算法?
或者贴一下有关汉字的排序算法。谢谢!
疑问.txt
最近学习.txt
新建文本文档.txt
已经修正的问题.txt
排序的算法如下:int MyListView::CompareFunction(LPARAM lParam1, LPARAM lParam2, LPARAM lParamData)
{
MyListView* pListCtrl = reinterpret_cast<MyListView*>(lParamData);
MyListItem* pItem1 = reinterpret_cast<KD_MyListItem*>( lParam1 );
MyListItem* pItem2 = reinterpret_cast<KD_MyListItem*>( lParam2 );
if (pListCtrl->m_iSortColumn == COLUMN_NAME)
{
CString str1(pItem1->GetListItemText(pListCtrl->m_iSortColumn));
CString str2(pItem2->GetListItemText(pListCtrl->m_iSortColumn));
if(pListCtrl->m_bAscSort)
return str1.CompareNoCase(str2);
else
return str2.CompareNoCase(str1);
}
}XP系统的列表(LVS_REPORT),对上面相同的文件名进行降序排序,排出的结果(如下), 最近学习.txt
语言.txt
已经修正的问题.txt
疑问.txt
新建文本文档.txt按照排列结果来看,文件是根据汉字的拼音来比较的,请问哪个大侠知道一些比较通用的比较算法?
或者贴一下有关汉字的排序算法。谢谢!
解决方案 »
- 急!下面是一个APES谱估计的matlab代码,求高手转换成C++,我用的是vs2003的MFC在做项目,分数不多,见谅
- directx8 全屏模式下显示 gdi窗口的问题
- 求《深入解析ATL》源代码
- 若干个线程,每一个线程绑定一个recordset,连接sqlserver,很快就把sqlserver的CPU占用率搞到了99%,有什么优化的思路吗?
- 请较一个关于CoMarshalInterface的问题
- 怎么样才能动态的对一个指针再追加一部分内存?
- 怎样用STL的方法得出一个数组元素值的大小是前3位的元素序号?
- 我是菜鸟!用MFC的CFile类怎么来实现文件的追加呢?
- 无需SMTP就可以发送邮件,这个技术是如何实现的?
- 请教:已知边表信息,提取由边表组成的封闭区域算法。
- AfxBeginThread开线程出错的初级问题.如何解决?
- 【投票】没通过四级英语考试,能参加考研么?
我想这个与字符编码也许有关系#include "stdafx.h"
#include <tchar.h>
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;int _tmain(int argc, _TCHAR* argv[])
{
char* data[] = {
"语言",
"疑问",
"最近学习",
"新建文本文档",
"已经修正的问题",
};
vector<string> colTest;
for (int i = 0; i < sizeof(data) / sizeof(data[0]); i++) {
colTest.push_back(string(data[i]));
}
sort(colTest.begin(), colTest.end());
copy(colTest.begin(), colTest.end(), ostream_iterator<string>(cout, "\n"));
return 0;
}
int iSize = WideCharToMultiByte(CP_ACP, 0, str1, -1, NULL, 0, NULL, NULL);
char* pszMultiByte1 = new char[iSize+1];
WideCharToMultiByte(CP_ACP, 0, str1, -1, pszMultiByte1, iSize, NULL, NULL); iSize = WideCharToMultiByte(CP_ACP, 0, str2, -1, NULL, 0, NULL, NULL);
char* pszMultiByte2 = new char[iSize+1];
WideCharToMultiByte(CP_ACP, 0, str2, -1, pszMultiByte2, iSize, NULL, NULL); if(pListCtrl->m_bAscSort)
return _stricmp(pszMultiByte1, pszMultiByte2);
else
return _stricmp(pszMultiByte2, pszMultiByte1); delete [] pszMultiByte1;
delete [] pszMultiByte2;
#endif