只需要您的专家建议即可。
我有数百个* .cpp源代码文件,其中包含各种测试功能,语法如下:
void test1()
...
void test25()
一个cpp文件可能只有一个测试,即void test1(),它可能具有大量测试,例如void test266()或任何数字。
我想对所有这些函数进行计数,我想分别找到最大的测试函数。编号 函数名称。 这可能是最后一个,但不一定是最后一个,例如
void test1()
[
...
}
void test3()
[
...
}
void test2()
[
...
}
也可能会发生。
有什么想法可以快速汇总这些信息吗? 我对C ++(VC 2013)有点熟悉,但对可能必须使用的(C ++)正则表达式却不太了解。
没有正则表达式:逐行读取cpp文件并搜索模式testnumber,对其进行计数,然后执行该程序 我可以管理一个文件夹中所有* .cpp文件的批处理,但是有没有一种工具可以使工作更轻松?
感谢任何提示。
答案 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;
}