Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <string>
- std::string read_file(const std::string& filename)
- {
- std::ifstream file(filename.c_str());
- std::string str = std::string(
- (std::istreambuf_iterator<char>(file.rdbuf())),
- std::istreambuf_iterator<char>());
- return str;
- }
- std::string inner_html(
- const std::string& html,
- const std::string& node)
- {
- size_t i0 = html.find("<"+node+">");
- if(i0 == std::string::npos)
- return "";
- i0 += node.size() + 2;
- size_t i1 = html.find("</"+node+">", i0);
- if(i1 == std::string::npos)
- return "";
- return html.substr(i0, i1 - i0);
- }
- struct html_parser
- {
- std::string html;
- html_parser(const std::string& html) : html(html) {}
- html_parser inner(const std::string& node)
- {
- return html_parser(inner_html(html, node));
- }
- friend std::ostream& operator<<(std::ostream& os, const html_parser& hp)
- {
- os << hp.html;
- return os;
- }
- };
- int main()
- {
- //std::string html_str = read_file("test.html");
- std::string html_str = "<html><p><strong>Books</strong></p></html>";
- html_parser html(html_str);
- std::cout << html.inner("p").inner("strong") << "\n";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement