在C ++代码中查找带编号的函数?

时间:2019-06-21 15:11:16

标签: c++ regex search

只需要您的专家建议即可。

我有数百个* .cpp源代码文件,其中包含各种测试功能,语法如下:

void test1()
...
void test25()

一个cpp文件可能只有一个测试,即void test1(),它可能具有大量测试,例如void test266()或任何数字。

我想对所有这些函数进行计数,我想分别找到最大的测试函数。编号 函数名称。 这可能是最后一个,但不一定是最后一个,例如

void test1()
[
...
}
void test3()
[
...
}
void test2()
[
...
}

也可能会发生。

有什么想法可以快速汇总这些信息吗? 我对C ++(VC 2013)有点熟悉,但对可能必须使用的(C ++)正则表达式却不太了解。

没有正则表达式:逐行读取cpp文件并搜索模式testnumber,对其进行计数,然后执行该程序 我可以管理一个文件夹中所有* .cpp文件的批处理,但是有没有一种工具可以使工作更轻松?

感谢任何提示。

1 个答案:

答案 0 :(得分:0)

我个人会使用python或bash之类的方法来执行此操作,但也可以使用regex库在C ++中完成此操作:

#include <iostream>
#include <fstream>
#include <regex>
int main()
{
    //set up regex
    std::regex reg("void [a-zA-Z]*(\\w*)");
    std::smatch matches;
    //set up file
    std::ifstream infile("path/to/Cpp/file");
    //do the actual stuff
    std::string line;
    int max = 0;
    while (std::getline(infile, line))
    {
        if (std::regex_search(line, matches, reg))
        {
            int match = std::stoi(matches[1].str());
            if (match >= max)
                max = match;
        }
    }
    std::cout << max << std::endl;
    return 0;
}