My intention is to create a complete HTML parser, so far I made a basic algorithm that iterates trough text and extracts everything in an "a" tag.
It works on everything I tried, but I want a review of what I could do better or what I did right.
#include <iostream>
#include <stdio.h>
#include <vector>
#include <fstream>
#include <streambuf>
#include <sstream>
std::vector<std::string> performCheck(std::string check, std::string text)
{
int iterator = 0;
int second_iterator = 0;
bool is_flag = false;
std::string returnString = "";
std::vector<std::string> returnVector;
for(iterator = 0;iterator < text.size();iterator++)
{
if(text[iterator] == '<')
{
is_flag = true;
for(second_iterator = 0;second_iterator < check.size();second_iterator++)
{
if(text[iterator + second_iterator] == check[second_iterator])
{
returnString = returnString + text[iterator + second_iterator];
}
else
{
is_flag = false;
returnString = "";
break;
}
}
if(is_flag == true)
{
for(second_iterator = iterator + second_iterator;second_iterator < text.size();second_iterator++)
{
returnString = returnString + text[second_iterator];
if(text[second_iterator - 2] == '/' && text[second_iterator - 1] == 'a')
{
returnVector.push_back(returnString);
break;
}
}
}
}
}
return returnVector;
}
int main(int argc, char** argv) {
std::string check = "<a href=\"";
std::vector<std::string> urlmap;
std::ifstream t("your_file.ext");
std::stringstream buffer;
buffer << t.rdbuf();
std::string textBig = buffer.str();
urlmap = performCheck(check, textBig);
for(int iterator = 0;iterator < urlmap.size();iterator++)
{
std::cout<<urlmap[iterator]<<std::endl;
}
system("PAUSE");
return 0;
}