C++读取某一目录下的所有文件名

如何用C++实现读取某一目录下的所有txt文件的文件名,比如路径是E:\\data文件夹下有几个txt文件,现在把他们的文件名全部读取到一个数组里如何实现?希望高手可以给... 如何用C++实现读取某一目录下的所有txt文件的文件名,
比如路径是E:\\data文件夹下有几个txt文件,现在把他们的文件名全部读取到一个数组里如何实现?

希望高手可以给出完整的代码!小妹拜谢!
如果是相对路径,data文件夹在当前可执行文件所在的文件夹内,又该如何操作呢?
展开
 我来答
L_o_o_n_i_e
2009-11-04 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:5207万
展开全部
用system(...) 调DOS命令,把文件名存到一个文件里,再打开文件,由于是一行一个文件名,很容易自己读进来,放入数组。

system("DIR/B/AA E:\\data\\*.txt > my.lis");
文件名在my.lis 里。

当前文件夹:
system("DIR/B/AA *.txt > my.lis");
北风微风
推荐于2016-04-28 · TA获得超过1094个赞
知道小有建树答主
回答量:411
采纳率:0%
帮助的人:0
展开全部
我写了个,用到了MFC的CString和CFileFind,不知道是不是你想要的。

#include <afxwin.h> // project->settings->general->Use MFC in a shared DLL

#include <iostream>
using namespace std;

void FindAllFile(CString path, CString* filenames, int& count)
{
CFileFind finder;
BOOL working = finder.FindFile(path + "\\*.*");
while (working)
{
working = finder.FindNextFile();
if (finder.IsDots())
continue;
if (finder.IsDirectory())
{
//FindAllFile(finder.GetFilePath(), filenames, count);
}
else
{
CString filename = finder.GetFileName();
filenames[count++] = filename;
}
}
}

int main(int argc, char* argv[])
{
CString filenames[1024];
int count = 0;
char path[MAX_PATH];
while (cin >> path) { // . for current directory, empty for root directory
FindAllFile(path, filenames, count);
for (int i = 0; i < count; i++)
cout << (LPCSTR)(filenames[i].GetBuffer(filenames[i].GetLength())) << endl;
}
return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
石头翔子
2009-11-01 · 超过18用户采纳过TA的回答
知道答主
回答量:43
采纳率:0%
帮助的人:49.7万
展开全部
//运行过了,符合要求

#include<iostream>
#include<io.h>
using namespace std;

void main()
{
_finddata_t file;
long lf;
//修改这里选择路径和要查找的文件类型
if((lf = _findfirst("E:\\msdn\\*.txt",&file))==-1l)//_findfirst返回的是long型;long __cdecl _findfirst(const char *, struct _finddata_t *)
cout<<"文件没有找到!\n";
else
{
cout<<"\n文件列表:\n";
do{
cout<<file.name;
if(file.attrib == _A_NORMAL)cout<<" 普通文件 ";
else if(file.attrib == _A_RDONLY)cout<<" 只读文件 ";
else if(file.attrib == _A_HIDDEN )cout<<" 隐藏文件 ";
else if(file.attrib == _A_SYSTEM )cout<<" 系统文件 ";
else if(file.attrib == _A_SUBDIR)cout<<" 子目录 ";
else cout<<" 存档文件 ";
cout<<endl;
} while( _findnext( lf, &file ) == 0 );//int __cdecl _findnext(long, struct _finddata_t *);如果找到下个文件的名字成功的话就返回0,否则返回-1

}
_findclose(lf);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vbtraz
2009-10-31 · TA获得超过5532个赞
知道大有可为答主
回答量:4152
采纳率:0%
帮助的人:4439万
展开全部
这个跟c++关系不大, 主要是windows api。。

这是微软给的例子
http://msdn.microsoft.com/en-us/library/aa365200(VS.85).aspx
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jaylinli
2009-10-31 · 超过19用户采纳过TA的回答
知道答主
回答量:37
采纳率:0%
帮助的人:41.3万
展开全部
同意楼上的,如果是Windows程序的话确实必须用Windows API,
其他操作系统也需要用到各自的系统API的。

我觉得相对路径其实也是相对的,就是程序检测到自己处在某个路径下,然后以自己为出发点再去找其他文件,用到的还是绝对路径。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式