2016-04-15 22 views
1

私は学校のプロジェクトに取り組んでいます。指定されたファイルパスに入り、ファイル拡張子を数えます。しかし、何らかの理由で私はそれを数えていません。 ファイルの拡張子に使用している正規表現が有効でないか、またはディレクトリイテレータが正しく実行されていません。しかし、私は時間のためにそれで遊んでてきたと私はそれを 正規表現が届かない: regex extensions("\.(java|class)");ファイル拡張子を数えないプログラム

ディレクトリイテレータを:

void nrScan(regex extensions, path const& f, map<string, int> &numExtensions) 
{ 
    for (directory_iterator d(f), e; d != e; d++) 
    { 
     string extension = d->path().extension().string(); 
     int count = 0; 
     if (regex_search(extension, extensions)) 
     { 
      numExtensions[extension]++; 
      count++; 
     } 
     cout << count << endl; 
    } 
} 

答えて

0

あなたの正規表現は拡張正規表現のように見えます。 regex_searchが基本REではなく拡張REを使用して検索を実行するようにする必要があります。

+0

私は聞いたことがなく、基本的な表現や拡張された正規表現も聞いたことがありません。 – billyjim1

+0

http://www.cplusplus.com/reference/regex/regex_search/これは、一致するbasic_regexオブジェクト(パターン)です。だから、あなたは "\。\(java \ | class \\)"に変更する必要があります。 –

+0

私はそれをしましたが、まだ動作していません – billyjim1