2012-04-26 5 views
4

wavファイルのみを選択し、それらのファイルの文字列を排他的に返すディレクトリトラバーサを持つ良い方法を考えようといくつかの問題があります。ちょうどwavファイル。私はdirent.hのサブディレクトリを見るのを止めることができます。文字列に.wavを含むファイルしか許可しないif文が必要です。Dirent.h - 特定の拡張子を持つファイルの文字列を排他的に取得

これまでのコードはこれまでのところ、ヘッダファイルのためのwikiページで見られまし: - これまでのところ、私はそれを把握することができていない

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; 

} 

すべてのヘルプ感謝、私はそのスーパー難しくありませんよ。

+0

http://stackoverflow.com/questions/874134/find-if-string-endswith-another-string-in-cを使用して、ファイル名が.wavで終わるかどうかを確認してください。 – user786653

+0

'if(!S_ISREG(filestat。 st_mode)) ';あなたの '.wav'ファイルは、ソケット、文字またはブロック特殊デバイス、FIFOなどではありません。その後、あるいは' stat'ベースのチェックの前に、名前の最後の4文字が '.wav '。 –

答えて

2

私はあなたが探している解決策を正確にgithubに持っています。

関連する問題