mathiaspl20

Untitled

Apr 17th, 2020
253
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. bool ReadPoints(std::string const& fileName, std::vector<Point3D>& xyz_vector)
  2. {
  3.     if (ValidateFile(fileName))
  4.     {
  5.         //do things
  6.         std::ifstream file{ fileName };
  7.         if (!file.is_open())
  8.         {
  9.             std::cerr << cErrOpen;
  10.             return false;
  11.         }
  12.  
  13.         try //der Scanner wirft im Fehlerfall eine Exception -> try-catch-block
  14.         {
  15.             bool header = false;
  16.             size_t count = 0;
  17.             pfc::scanner scan;
  18.  
  19.             scan.register_keyword(cHeader); //register keyword for header
  20.  
  21.             scan.set_istream(file);//Anlegen des Scanners mit gleichzeitigem Lesen des Eingabestromes in einen internen Puffer. Das erste Symbol wird gescannt.
  22.  
  23.             if (scan.is_keyword() && (scan.next_symbol()).is(cEqChar))
  24.             {
  25.                 header = true;
  26.                 scan.next_symbol();
  27.                 count = scan.get_integer();
  28.                 xyz_vector.clear();
  29.             }
  30.             scan.next_symbol();//Weiterschalten auf das naechste Symbol
  31.             size_t i = 0;
  32.             char flag = 1;
  33.             while (scan.has_symbol() && !scan.is_eof())
  34.             {
  35.                 Point3D tmp;
  36.                 if (scan.is(cBrOpenChar))
  37.                 {
  38.                     scan.next_symbol();
  39.                 }
  40.                 else if (scan.is(cBrCloseChar))
  41.                 {
  42.                     scan.next_symbol();
  43.                 }
  44.                 else if (scan.is(cCommaChar))
  45.                 {
  46.                     scan.next_symbol();
  47.                 }
  48.                 else if (scan.is(cNegChar))
  49.                 {
  50.                     flag = -1;
  51.                 }
  52.                 else if (scan.is_integer())
  53.                 {
  54.                     tmp.x = scan.get_integer()*flag;
  55.                     do
  56.                     {
  57.                         flag = 1;
  58.                         scan.next_symbol();
  59.                         if(scan.is(cNegChar))
  60.                         {
  61.                             flag = -1;
  62.                         }
  63.                     }while (!scan.is_integer());
  64.                     tmp.y = scan.get_integer()*flag;
  65.                     do
  66.                     {
  67.                         flag = 1;
  68.                         scan.next_symbol();
  69.                         if (scan.is(cNegChar))
  70.                         {
  71.                             flag = -1;
  72.                         }
  73.                     } while (!scan.is_integer());
  74.                     tmp.z = scan.get_integer()*flag;
  75.                     xyz_vector.push_back(tmp);
  76.                     i++;
  77.                 }
  78.                 scan.next_symbol();
  79.             }
  80.             file.close();//Schliessen der geoeffneten Datei
  81.             std::clog << std::endl << cFinished;
  82.             return true;
  83.         }
  84.         catch (std::exception const& ex)//hier werden die Exceptions des Scanners gefangen und eine Fehlermeldung ausgegeben
  85.         {
  86.             std::cerr << "Error: " << ex.what() << std::endl;
  87.             file.close();//Schliessen der geoeffneten Datei
  88.             return false;
  89.         }
  90.     }
  91.     else
  92.     {
  93.         std::cerr << std::endl << cFinished;
  94.         return false;
  95.     }
  96. }
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×