C++获取文件夹名时,为什么与“.”和“..”比较?

小胖胖的大宝宝 2019-01-24 02:31:27
#include <iostream>
#include <vector>
#include <string.h>
#include <io.h>


using namespace std;



void getFiles(string path, vector<string>& files,string file_type)
{
long hFile =0;
struct _finddata32_t fileInfo;
string p;
if((hFile = _findfirst(p.assign(path).append(file_type).c_str(),&fileInfo)) != -1)
{
do
{
//如果是目录,迭代之
//如果不是,加入列表
if((fileInfo.attrib & _A_SUBDIR))
{
//下面这一行不太懂,求教!!!
if(strcmp(fileInfo.name, ".")!=0 && strcmp(fileInfo.name,"..")!=0)
getFiles(p.assign(path).append("\\").append(fileInfo.name),files,file_type);
}
else
{
files.push_back(fileInfo.name);
}
}while(_findnext(hFile,&fileInfo)==0);
}
_findclose(hFile);
}
int main()
{
string path = "E:\\result";
vector<string> files;
string file_type="\\*.ply";
getFiles(path,files,file_type);
cout<<files.size()<<endl;
for(int i=0;i<files.size();i++)
cout<<files[i]<<endl;

return 0;

}
...全文
586 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluewanderer 2019-01-28
  • 打赏
  • 举报
回复
.和..是拿来表示当前路径和上一级路径的两个假的目录。如果你把这两个任意一个当普通目录处理,都会造成死循环。
  • 打赏
  • 举报
回复
任何一个文件夹中都存在这两个目录
  • 打赏
  • 举报
回复
windows的特殊目录 用cmd的dir命令可以看到。
孤晴 2019-01-28
  • 打赏
  • 举报
回复
windows的特殊目录
CT8100 2019-01-25
  • 打赏
  • 举报
回复

这个是windows下的么。。我以为这个写法是在linux。。。
ztenv 版主 2019-01-25
  • 打赏
  • 举报
回复
把这两个特殊的目录过滤掉就好了
lin5161678 2019-01-24
  • 打赏
  • 举报
回复
. 是当前目录
.. 是上一层目录

你可以简单的认为
每一个目录都都自带 2个文件夹
一个文件夹的名字是 .
另一个文件夹的名字是 ..

遍历文件夹的时候 这两个文件夹不去访问

64,640

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧