Wie kann ich nur bestimmte Werte einer Zeile einlesen???



  • Hallo

    ich möchte gerne eine Datei einlesen, was ich auch schon geschafft habe.Jedoch wird mir zuviel ausgegeben.

    Der Aufbau der Zeilen der txt-Datei:

    x y z unnötig unnötig unnötig unnötig unnötig unnötig unnötig unnötig unnötig
    x y z unnötig unnötig unnötig unnötig unnötig unnötig unnötig unnötig unnötig
    x y z unnötig unnötig unnötig unnötig unnötig unnötig unnötig unnötig unnötig
    ...

    Also wie man vielleicht schon sieht, brauch ich nur die xyz-Werte aus jeder Zeile.
    Wie kann ich das machen.Die Werte sind mit einem Lehrzeichen getrennt.

    Achso ich nutze Vektoren...

    Danke für eure Antworten

    😉


  • Administrator

    #include <string>
    #include <vector>
    #include <fstream>
    
    struct Point
    {
      int x;
      int y;
      int z;
    };
    
    int main()
    {
      // Die Datei.
      std::ifstream input("input.dat");
    
      // Der Container und eine Hilfsvariable.
      std::vector<Point> pointContainer;
      Point point;
    
      // Rest der Zeile.
      std::string line;
    
      // So lange lesen, bis der Stream ungültig wird.
      // Zuerst die drei Werte einlesen (angenommen es seien Integer).
      // Als zweites einfach die restliche Zeile einlesen.
      while(input >> point.x >> point.y >> point.z && 
            std::geline(input, line))
      {
        // Punkt speichern.
        pointContainer.push_back(point);
    
        // Vielleicht noch etwas mit dem Rest machen, welcher in line gespeichert wurde?
      }
    
      return 0;
    }
    

    Oder sowas in der Art.

    Referenz:
    www.cplusplus.com/reference

    Anstatt getline könnte man auch ignore verwenden. Finde ich aber weniger schön:
    http://www.cplusplus.com/reference/iostream/istream/ignore.html

    Grüssli



  • Super!!!
    Danke!!!
    Das war genau das was ich gesucht hab.
    Es funktioniert super..


Log in to reply