如何实现按文件名排序的方式来遍历一个目录??
写了一个得到选定目录下所有文件名的程序
部分代码如下:
find(char * lpPath)//lpPath为选定的目录的路径
{
char szFind[MAX_PATH];
WIN32_FIND_DATA FindFileData;
strcpy(szFind,lpPath);
strcat(szFind,"\\*.txt");
HANDLE hFind=::FindFirstFile(szFind,&FindFileData);
if(INVALID_HANDLE_VALUE == hFind) return;
while(TRUE)
{
if(FindFileData.cFileName[0]!='.')
{
strcpy(szFile,lpPath);
strcat(szFile,"\\");
strcat(szFile,FindFileData.cFileName);
myList.addTail(szFile);//myList为一个对列CList 用来保存遍历的文件名
}
if(!FindNextFile(hFind,&FindFileData)) break;
}
FindClose(hFind);
}
文件名都可以从目录里面读出来,但是遇到了如下问题
文件夹里面如有文件 1.txt 2.txt 3.txt ........ 100.txt 101.txt 102.txt ..200.txt
但是在myList得到的顺序是
1.txt 10.txt 100.txt
101.txt 102.txt ... 109.txt
11.txt 110.txt 111.txt .. 119.txt
....
我想在myList里面得到1.txt 2.txt 3.txt ........ 100.txt 101.txt 102.txt ..200.txt这个顺序
自我觉得可能有三种解决方法:
1.能不能通过在上面的代码里面加入什么语句(可能为库函数 我不知道)可以实现这个要求
2.直接对myList排序 不知道列表CList类有没有这样的方法
3.手工书写排序代码
上面的解决方法不知道有没有人知道其中的一种
望能告之解决方法
谢了!