【问题标题】:Program not counting file extensions程序不计算文件扩展名
【发布时间】:2016-04-15 04:16:29
【问题描述】:

我正在为学校做一个项目,它涉及进入指定的文件路径并计算文件扩展名。但是由于某种原因,我的并没有计算它们。 我的看法是,我用于文件扩展名的正则表达式无效,或者目录迭代器执行不正确。但是,我已经玩了几个小时了,但我没有得到它 正则表达式: 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;
    }
}

【问题讨论】:

    标签: c++ regex directory file-extension


    【解决方案1】:

    您的正则表达式看起来像扩展的正则表达式。您必须确保 regex_search 使用扩展 RE 而不是基本 RE 进行搜索。

    【讨论】:

    • 我从来没有听说过基本的或扩展的正则表达式。
    • cplusplus.com/reference/regex/regex_search 它说:要匹配的 basic_regex 对象(模式)。所以你应该把你的 re 改成 "\.(java\|class\)"。
    • 你能打印循环中的每个扩展吗?
    • 抱歉回复缓慢。是的,我试过了,所有的扩展都打印出来了。所以这不是问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    • 1970-01-01
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多