Advertisement
Guest User

Untitled

a guest
Dec 17th, 2012
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.29 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4.  
  5. std::string read_file(const std::string& filename)
  6. {
  7.     std::ifstream file(filename.c_str());
  8.     std::string str = std::string(
  9.         (std::istreambuf_iterator<char>(file.rdbuf())),
  10.         std::istreambuf_iterator<char>());
  11.     return str;
  12. }
  13.  
  14. std::string inner_html(
  15.     const std::string& html,
  16.     const std::string& node)
  17. {
  18.     size_t i0 = html.find("<"+node+">");
  19.     if(i0 == std::string::npos)
  20.         return "";
  21.     i0 += node.size() + 2;
  22.    
  23.     size_t i1 = html.find("</"+node+">", i0);
  24.     if(i1 == std::string::npos)
  25.         return "";
  26.    
  27.     return html.substr(i0, i1 - i0);
  28. }
  29.  
  30. struct html_parser
  31. {
  32.     std::string html;
  33.  
  34.     html_parser(const std::string& html) : html(html) {}
  35.    
  36.     html_parser inner(const std::string& node)
  37.     {
  38.         return html_parser(inner_html(html, node));
  39.     }
  40.    
  41.     friend std::ostream& operator<<(std::ostream& os, const html_parser& hp)
  42.     {
  43.         os << hp.html;
  44.         return os;
  45.     }
  46. };
  47.  
  48. int main()
  49. {
  50.     //std::string html_str = read_file("test.html");
  51.     std::string html_str = "<html><p><strong>Books</strong></p></html>";
  52.     html_parser html(html_str);
  53.     std::cout << html.inner("p").inner("strong") << "\n";
  54.    
  55.     return 0;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement