Ascii-Dateien lesen



  • Hallo!

    Ich habe mehrere Ascii-Files die ich auslesen muss und den Inahlt in ein Array schreiben möchte. Die Files sehen z.B. wie folgt aus:
    Name, Straße, Wohnort, PLZ, Land,
    Das Separatorzeichen zwischen den einzelnen Datensätzen ist mir bekannt, kann aber variieren. Nun möchte ich jeden einzelnen Datensatz lesen (als bis zum Separatorzeichen) und diesen String in einer einzelnen "Zelle" eines Arrays speichern. Eine Zeile in der Ascii-Datei soll auch wieder eine "Zeile" im Array sein.
    Kann mir jemand sagen, wie ich das machen muss? Wäre echt toll!

    Gruß
    Gange



  • Eine grobe und ungetestete Version:

    #include <iostream>
    #include <string>
    #include <vector>
    
    using namespace std;
    
    class Adresse {
    public:
      Adresse( const std::string& s);
      void readFromString( const std::string& s);
    private:    
      string _name;
      string _vorname;
      string _pLZ;
    };
    
    Adresse::Adresse( const std::string& s)
    {
      readFromString( s);
    }
    
    void Adresse::readFromString( s)
    {
       const char DELIMITER = ',';
    
       istringstream is(s);
    
       string token;
       getline( is, token, DELIMITER);
       _name = token;
       if( !is.good()) { throw std::exception(); }
       getline( is, token, DELIMITER);
       _vorname = token;
       if( !is.good()) { throw std::exception(); }
       getline( is, token, DELIMITER);
       _plz = token;      
    }
    
    class Adressen {
    public:
       void readFromFile( const std::string& filename);
    private:
       vector<Adresse> _adressen;
    };
    
    void Adressen::readFromFile( const std::string& filename)
    {
       ifstream in( filename.c_str());
       while( in.good()) {
         string line;
         getline( in, line);
         if( !line.empty()) {
            Adresse adr( line);
            _adressen.push_back( adr);
         }   
       }
    }
    

    Zugriffsfunktionen und ähnliches musst Du noch selber hinzufügen.


Anmelden zum Antworten