用C或C++怎么打开一个文件夹,并读取文件夹下的多个文件(不知道有多少个,是什么格式的),求高手指点

用C或C++怎么打开一个文件夹,并读取文件夹下的多个文件(不知道有多少个,是什么格式的),用哪些标准函数来实现?我查了一些资料,可以用链表来实现,但在里面提到了DIR,d... 用C或C++怎么打开一个文件夹,并读取文件夹下的多个文件(不知道有多少个,是什么格式的),用哪些标准函数来实现?
我查了一些资料,可以用链表来实现,但在里面提到了DIR,dirent。我用vs2010,但我输入这些关键字的时候,并没有变色,我也包含了头文件#include <direct.h>,#inlcude <stdio.h>,#include <string.h>.这是为什么,是否linux和windows不一样。
希望知道要用到哪些C或C++的标准库函数
展开
 我来答
hs3180
2012-10-30 · TA获得超过310个赞
知道答主
回答量:100
采纳率:0%
帮助的人:79.1万
展开全部
这个在linux和windows下的API是不一样的,推荐使用boost库来解决兼容性问题

这是一个boost的例子,把文件夹中的文件列表排序并输出

int main(int argc, char* argv[])
{
path p (argv[1]); // p reads clearer than argv[1] in the following code

try
{
if (exists(p)) // does p actually exist?
{
if (is_regular_file(p)) // is p a regular file?
cout << p << " size is " << file_size(p) << '\n';

else if (is_directory(p)) // is p a directory?
{
cout << p << " is a directory containing:\n";

typedef vector<path> vec; // store paths,
vec v; // so we can sort them later

copy(directory_iterator(p), directory_iterator(), back_inserter(v));

sort(v.begin(), v.end()); // sort, since directory iteration
// is not ordered on some file systems

for (vec::const_iterator it (v.begin()); it != v.end(); ++it)
{
cout << " " << *it << '\n';
}
}

else
cout << p << " exists, but is neither a regular file nor a directory\n";
}
else
cout << p << " does not exist\n";
}

catch (const filesystem_error& ex)
{
cout << ex.what() << '\n';
}

return 0;
}

参考资料: http://www.boost.org/doc/libs/1_51_0/libs/filesystem/doc/tutorial.html#Directory-iteration

great人间
2012-10-30 · TA获得超过336个赞
知道小有建树答主
回答量:335
采纳率:100%
帮助的人:264万
展开全部
选取多个文件方法:
1、ctrl+a 全选,再按ctrl+c 复制,CTRL+ V粘贴
2\按住CTRL,在用鼠标点击,要选的文件。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
khlerc
推荐于2016-03-05 · TA获得超过420个赞
知道小有建树答主
回答量:485
采纳率:0%
帮助的人:267万
展开全部
void FileSearch(CString root)
{ // root 为目录名
CFileFind ff;
CString FilePath;
if (root.Right(1)!="/")
{
root+="/";
}
root+="*.*";
BOOL res=ff.FindFile(root);
while (res)
{
res=ff.FindNextFile();
FilePath=ff.GetFilePath();
if (ff.IsDirectory() && !ff.IsDots())// 找到的是文件夹
{
FileSearch(FilePath);// 递归
}
else if (!ff.IsDirectory() && !ff.IsDots())// 找到的是文件
{
m_ff+=FilePath;
m_ff+=" ";
}
}
}
追问
我要用纯的C/C++,不用MFC
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
鲁凯迪
2012-11-04 · TA获得超过2985个赞
知道大有可为答主
回答量:1.6万
采纳率:0%
帮助的人:3699万
展开全部
如果你CFile类,那么就会有一个Seek()方法,你要处理的文件的位置,然后你就可以file.Seek(0,的CFile ::端)。 FILE * seek()方法类似的使用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式