Имея несколько проблем, пытающихся придумать хороший способ иметь трассировку каталога, который будет выбирать только файлы wav и возвращать строки для этих файлов исключительно, например. просто файлы wav. Я могу остановить dirent.h, глядя в подкаталоги, я вполне уверен, что мне просто нужен оператор if, который разрешает файлы с .wav в строкеDirent.h - получить строки только для файлов с определенным расширением
До сих пор мой код выглядит так, я просто расширил несколько примеров, видел на вики-странице для заголовочного файла:
ifstream fin;
string dir, filepath;
DIR *dp;
struct dirent *dirp;
struct stat filestat;
cout << "dir to get files of: " << flush;
getline(cin, dir);
dp = opendir(dir.c_str());
if (dp == NULL){
cout << "Error(" << errno << ") opening " << dir << endl;
}
while ((dirp = readdir(dp))){
filepath = dir + "/" + dirp->d_name;
if (stat(filepath.c_str(), &filestat)) continue;
if (S_ISDIR(filestat.st_mode)) continue;
fin.open(filepath.c_str());
stringVec.push_back(filepath);
fin.close();
}
closedir(dp);
for(int i=0;i<stringVec.size();i++){
cout << stringVec[i] << endl;
}
Любая помощь приветствуется, я его не очень сложно - но до сих пор я не был в состоянии понять это.
Используйте http://stackoverflow.com/questions/874134/find-if-string-endswith-another-string-in-c, чтобы проверить, закончилось ли имя файла .wav – user786653
Используйте 'if (! S_ISREG (filestat. st_mode)) '; ваши файлы '.wav' не являются сокетами, символами или блоками специальных устройств, FIFO и т. д. После этого или даже перед любыми проверками на основе stat проверьте, что последние 4 символа имени' .wav '. –