C ++不能排除“。”和“..”使用readdir时

时间:2016-12-02 12:18:10

标签: readdir opendir

我正在编写一个代码来读取位于我主目录中的“resultsNEW”子目录中的所有文件,将它们的名字存储在一个向量中并将它们用于其他东西 我正在使用opendir和readdir来读取文件的名称,当然它包括“。”和“......”......现在,问题是我试图消除它们,但出于某种原因我不能这样做。 这是我的代码

int RFiles(vector<string>& f)
{
    //path of the directory containing the files
    string path = "./resultsNEW";

    DIR* dir;
    dirent* file;

    dir = opendir(path.c_str());
    if (dir)
    {
        while (file = readdir(dir))
        {
            if (file->d_name == "." || file->d_name == "..") // HERE IS THE PART WHICH IS NOT WORKING
            {
                cout << "File not good!" << endl;
            }
            else
            {
                cout << "Reading file:" << file->d_name << endl;
                string temp = path + "/" + file->d_name;
                f.push_back(temp);
            }
        }
        return(0);
    }
    else
    {
        return(1);
    }
    closedir(dir);
}

我添加了条件

if (file->d_name=="." || file->d_name=="..")
消除。和..,但他们被包括在内......输出是

Reading file:Output_M 0.1000E+12_nu  3.00_tau0.400_Reff0.3000E+04.txt
Reading file:Output_M 0.1000E+13_nu 22.00_tau0.200_Reff 0.1000E+05.txt
Reading file:Output_M 0.1000E+11_nu  1.00_tau0.500_Reff 0.1000E+04.txt
Reading file:..
Reading file:.

我确信这里有一些显而易见的东西,但我真的无法弄清楚是什么......

0 个答案:

没有答案