我想使用 c++ 从 directoy 获取字符串中的文件名

I want to get the filename in a string from a directoy using c++

本文关键字:字符串 获取 文件名 directoy c++      更新时间:2023-10-16

我有一个名为test的目录。此目录是在运行代码的另一部分时动态创建的。并且测试包含不同的文件。这些文件也是自动生成的。假设我在目录测试中生成了 a1.txt,a2.txt,a.c,a3.txt,b.c。我想在变量中获取 a3.txt 文件名。这意味着我想迭代目录的内容并获取与最大数字关联的".txt"文件的名称。请帮助我解决这个问题。

使用 opendir 函数,

DIR *opendir(const char *name);

打开该目录后,使用 readdir 获取该目录中的文件。

struct dirent *readdir(DIR *dirp);
使用

结构,您可以获取文件名,也可以使用该文件。

下面给出了给定目录中的目录和文件。

using namespace std;
int getDirContent (string dir, vector<string> &files) {
    DIR *dp;
    struct dirent *dirp;
    if ((dp  = opendir(dir.c_str())) == NULL) {
        cout << "Error(" << errno << ") opening " << dir << endl;
        return errno;
    }
    while ((dirp = readdir(dp)) != NULL) {
        files.push_back(string(dirp->d_name));
    }
    closedir(dp);
    return 0;
}
string dir = string(".");
vector<string> files = vector<string>();
getDirContent(dir,files);