C++读取某一目录下的所有文件名
如何用C++实现读取某一目录下的所有txt文件的文件名,比如路径是E:\\data文件夹下有几个txt文件,现在把他们的文件名全部读取到一个数组里如何实现?希望高手可以给...
如何用C++实现读取某一目录下的所有txt文件的文件名,
比如路径是E:\\data文件夹下有几个txt文件,现在把他们的文件名全部读取到一个数组里如何实现?
希望高手可以给出完整的代码!小妹拜谢!
如果是相对路径,data文件夹在当前可执行文件所在的文件夹内,又该如何操作呢? 展开
比如路径是E:\\data文件夹下有几个txt文件,现在把他们的文件名全部读取到一个数组里如何实现?
希望高手可以给出完整的代码!小妹拜谢!
如果是相对路径,data文件夹在当前可执行文件所在的文件夹内,又该如何操作呢? 展开
展开全部
我写了个,用到了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;
}
#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;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//运行过了,符合要求
#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);
}
#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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
同意楼上的,如果是Windows程序的话确实必须用Windows API,
其他操作系统也需要用到各自的系统API的。
我觉得相对路径其实也是相对的,就是程序检测到自己处在某个路径下,然后以自己为出发点再去找其他文件,用到的还是绝对路径。
其他操作系统也需要用到各自的系统API的。
我觉得相对路径其实也是相对的,就是程序检测到自己处在某个路径下,然后以自己为出发点再去找其他文件,用到的还是绝对路径。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询