/*
* @topic T00340 Apr 18 -- how to print HTML content withut tags v.1
* @brief Program demonstrates <tt><sstream></tt> header and <tt>stringstream</tt> class
*/
#include <iostream>
#include <string>
#include <sstream>
#include <cctype>
using namespace std;
int main()
{
// Assume this is HTML that we have to parse:
string str_html =
"<html>"
"<head>"
"<title>TITLE</title>"
"</head>"
"<body>"
"<p>PARAGRAPH</p>"
"</body>"
"</html>\n"
;
// construct buffer to hold the HTML
stringstream buffer( str_html );
// Use unformatted input to read HTML character-by-character:
bool flag_inside_tag = false;
int onechar; // using int because char cannot represent EOF
while ( ( onechar = buffer.get() ) != EOF ) {
if ( onechar == '<') {
// Encountered opening of an HTML tag
flag_inside_tag = true;
continue;
}
else if ( onechar == '>') {
// Encountered closing of an HTML tag
flag_inside_tag = false;
cout << " ";
continue;
}
else if ( flag_inside_tag == false ) {
// Print everything outside of HTML tags
std::cout.put( onechar );
}
}
return 0;
}