So far I have found that using grep I can find the header names in a C program.
Regular expression to extract header name from c file
But in the above case the accepted answer uses grep command with some flags. But I want to use this regex in regex_search()
of C++ programmatically. But I am unable to convert the regex in the above answer to fit in C++. I want to know how can I convert the above regex to be used in C++.
regex expr(".*#include.*(<|\")\\K.*(?=>|\")");
I have written above regex but it doesn't give the expected output. Basically I read the C file as string and use C++ regex search to extract header names data. Below code explains what I am trying to do...
#include<bits/stdc++.h>
using namespace std;
void searchContent(string content) {
smatch match;
regex expr(".*#include.*(<|\")\\K.*(?=>|\")");
while (regex_search(content, match, expr)) {
for (auto x : match)
cout << x << " ";
cout << std::endl;
content = match.suffix().str();
}
}
int main(int argc, char** argv)
{
std::ifstream ifs("/home/ultraproton/PlacementPrep/C++/regex/testfile.c");
std::string content( (std::istreambuf_iterator<char>(ifs) ),
(std::istreambuf_iterator<char>() ) );
searchContent(content);
return 0;
}
Aucun commentaire:
Enregistrer un commentaire