c++学习:容器list实战(获取目录返回容器list)

新建一个dir.h,声明dir类

复制代码
#ifndef DIR_H
#define DIR_H

#include <sys/types.h>
 #include <dirent.h>
#include <stdio.h>
#include <string.h>

#include <iostream>
#include <list>

class Dir
{
public:
    Dir();

    static std::list<std::string> entryList(const char *dirPath, const char *filter);
};

#endif // DIR_H

新建一个dir.cpp,定义dir类

复制代码
#include "dir.h"


Dir::Dir()
{

}

std::list<std::string> Dir::entryList(const char *dirPath, const char *filter)
{
    std::list<std::string> list;

     DIR * fp = opendir(dirPath);
     if(fp == NULL)
     {
         perror("opendir error");
         return list;
     }

     while(1)
     {
        struct dirent * info = readdir(fp);
        if(info == NULL)
        {
            break;
        }

        if(info->d_type == DT_REG && info->d_name[0] != '.' &&
                strstr(info->d_name,filter)!=NULL)
        {
            //获取文件名
            char text[1024] = {0};

            if(dirPath[strlen(dirPath)-1] == '/')
            {
                sprintf(text,"%s%s",dirPath,info->d_name);
            }
            else{
                sprintf(text,"%s/%s",dirPath,info->d_name);
            }

            //存储到 链表容器中
            list.push_back(text);
        }
     }

     return list;
}

调用方法

复制代码
//返回当前目录下以txt结尾的文件
std::list<string> list = Dir::entryList("./",".txt");
相关推荐
梦醒沉醉11 分钟前
C++和标准库速成(五)——C风格的数组、std::array、std::vector、std::pair和std::optional
c++
计算机毕设定制辅导-无忧学长42 分钟前
HTML 基础夯实:标签、属性与基本结构的学习进度(一)
前端·学习·html
ん贤1 小时前
【数据结构】栈与队列:基础 + 竞赛高频算法实操(含代码实现)
java·数据结构·c++·算法
萧萧玉树1 小时前
设计模式-单一职责
开发语言·c++·设计模式
小程同学>o<1 小时前
嵌入式开发之STM32学习笔记day06
笔记·stm32·学习
小林熬夜学编程2 小时前
【高并发内存池】第一弹---深入解析内存池:项目介绍、原理及设计定长内存池全攻略
linux·服务器·c语言·开发语言·c++·算法
郭涤生2 小时前
Chapter 2:auto_《Effective Modern C++》notes
开发语言·c++·笔记
Lllongroad2 小时前
LINUX驱动学习之IIC驱动-----以AP3216C为例
linux·服务器·驱动开发·学习
一个处女座的程序猿O(∩_∩)O2 小时前
人工智能中神经网络是如何进行学习的
人工智能·神经网络·学习
刃神太酷啦2 小时前
算法基础篇(蓝桥杯常考点)
数据结构·c++·算法·蓝桥杯c++组