Advertisement
ToastyStoemp

SimpleXMLReader

May 7th, 2015
298
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.57 KB | None | 0 0
  1. //---------------------------
  2. // Includes
  3. //---------------------------
  4. #include <sys/stat.h>
  5. #include <algorithm>
  6.  
  7. //---------------------------
  8. // Constructor & Destructor
  9. //---------------------------
  10. Level::Level(int levelNum)
  11. {
  12.     std::string levelName = "./resources/Level" + std::to_string(levelNum) + ".txt";
  13.     LevelDetailLoader(levelName);
  14. }
  15.  
  16. Level::~Level()
  17. {
  18. }
  19.  
  20. void Level::LevelDetailLoader(const std::string& name) {
  21.    
  22.     if (ExistsTest(name))
  23.     {
  24.         std::wifstream file(name);
  25.  
  26.         tstring sLine;
  27.         tstring detailText;
  28.         while (!file.eof())
  29.         {
  30.             getline(file, sLine);
  31.             detailText += sLine;
  32.         }
  33.         file.close();
  34.  
  35.         tstring playerInfo;
  36.         tstring type = _T("PlayerInfo");
  37.         while (ExtractInformation(detailText, playerInfo, type))
  38.         {
  39.             //Do something with playerInfo, this is a std::string type
  40.         }
  41.     }
  42. }
  43.  
  44. bool Level::ExtractInformation(tstring& textRef, tstring& info, tstring& type)
  45. {
  46.     tstring component = _T("<" + type);
  47.     tstring::iterator posComponent = search(textRef.begin(), textRef.end(), component.begin(), component.end());
  48.    
  49.     if (posComponent == textRef.end())
  50.         return false;
  51.  
  52.     tstring::iterator posOpeningDoubleQuote = find(posComponent, textRef.end(), _T('\"'));
  53.     tstring::iterator posClosingDoubleQuote = find(posOpeningDoubleQuote + 1, textRef.end(), _T('\"'));
  54.  
  55.     info = tstring(posOpeningDoubleQuote + 1, posClosingDoubleQuote);
  56.  
  57.     textRef.erase(posComponent, posClosingDoubleQuote + 1);
  58.  
  59.     return true;
  60. }
  61.  
  62. bool Level::ExistsTest(const std::string& name) {
  63.     struct stat buffer;
  64.     return (stat(name.c_str(), &buffer) == 0);
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement