读书人

c++遍历某个路径上的所有文件(比如tx

发布时间: 2013-02-24 17:58:56 作者: rapoo

c++遍历某个路径下的所有文件(比如txt)
hi,如题,
1.我想在windows下实现(我在linux上实现了,但是用到了一个库,windows下没有);
2.我不想依赖VS之类的,感觉他们也是有些自己独特的库,因为我现在用codeblocks;
3.之前有个人用C++调用cmd的部分命令,一句话就把路径下的所有文件名称写到开一个txt文件,然后通过读取该txt文件来遍历这些文件,我实现了,但觉得还不是我想要的。

用VS实现可以,但保证我在codeblocks下不用VS的编译器也能实现就行了,谢谢啦!!!
[解决办法]
给一段以前写的代码,供参考:

// 遍历给定目录下所有子目录,查找*.txt,放入CStringArray中
void CTestMADlg::getFolderDayFile(CString pathStr, CStringArray& arrStrFile)
{
CString myDataPath,fdPath;
myDataPath=pathStr + "\\*.*";
CString strTmp;

CFileFind find;
BOOL bf = find.FindFile(myDataPath);
while(bf)
{
bf = find.FindNextFile();
if(!find.IsDots())
{
fdPath=find.GetFilePath();
if (find.IsDirectory())
{
//如果是文件夹,递归,继续往下找
getFolderDayFile(fdPath, arrStrFile);
}
else
{
//如果是文件,判断是否是*.txt
strTmp=fdPath.Right(4);
strTmp.MakeLower();
if ( strTmp==".txt" )
arrStrFile.Add(fdPath);
}
}
}
find.Close();
}

[解决办法]
#1不是依赖MFC或者VS,这个依赖微软提供的库,#1的代码不依赖MFC。
VS只是一个集成环境,包括编译器,编辑器,调试器等。MFC又只是一个封装了的界面库。
你可以用codeblocks引用:
谢谢,不过一看我感觉就是严重依赖MFC或者VS的。
能写个满足我1,2,3条要求的程序不?谢谢啦!

[解决办法]
<io.h>头文件,
_findfirst
_findnext
函数

这个不是 MFC的函数
[解决办法]
子路径下的文件需要遍历么? 如果需要就用dfs或bfs就好了
[解决办法]
引用:
顺便问一下,为什么有些函数要以 “_”开头?看到这些符号,我应该首先想到什么? thanks!



#include <stdio.h>
#include <io.h>

int main (void)
{
_finddata_t fileDir;
char* dir="d:\\temp\\*.*";
long lfDir;

if((lfDir = _findfirst(dir,&fileDir))==-1l)


printf("No file is found\n");
else{
printf("file list:\n");
do{
printf("%s\n",fileDir.name);

}while( _findnext( lfDir, &fileDir ) == 0 );
}
_findclose(lfDir);

return 0;
}



下划线开头的函数,据说没啥特别意义,就是这些库函数为了防止和用户自定义的函数名字冲突而已。

读书人网 >C++

热点推荐