Daten aus Textdokument auslesen und in vector schreiben



  • gibt es niemanden der mir weiter helfen kann?



  • PauleJS schrieb:

    gibt es niemanden der mir weiter helfen kann?

    Du hast doch eine Erklärung des Problems und einen Lösungsansatz erhalten.



  • PauleJS schrieb:

    gibt es niemanden der mir weiter helfen kann?

    Hallo PaulJS,
    in der Antwort von SeppJ steht doch schon die Lösung für Dein Problem. Wenn Du was nicht verstehst, so musst Du schon konkreter fragen.

    Gruß
    Werner



  • tut mir leid wegen dem letzten kommentar, habe immer nur die erste seite gesehen!

    ich glaube ich habe nun langsam verstanden wie es funktioniert!
    wollte das nun noch mit einer toString methode lösen, wo die ausgabe definiert wird.

    ist dieser ansatz so richtig? oder gibt es einfachere wege hierbei zum ziel zu kommen?

    std::ostream& operator<<(std::ostream& os, const Vliegreizen& v){
    	os << v.toString();
    	return os;
    	}
    

    ausserem bekomme ich hier noch die fehlermeldung:
    error C2601: 'operator <<' : local function definitions are illegal


  • Mod

    PauleJS schrieb:

    ist dieser ansatz so richtig? oder gibt es einfachere wege hierbei zum ziel zu kommen?

    Das ist eine gute Idee und auch ein sehr häufig benutzter Ansatz. Die andere übliche Methode ist es, den Operator zum friend der Klasse zu machen.

    ausserem bekomme ich hier noch die fehlermeldung:
    error C2601: 'operator <<' : local function definitions are illegal

    Das geht aus dem Code nicht hervor, woran das liegt. Es klingt danach, als würdest du versuchen den Operator innerhalb einer anderen Funktion zu definieren. Überprüf mal, ob alle Klammern in deinem Programm richtig gesetzt sind.



  • da mein code total unstrukturiert war, habe ich einfach neu angefangen!

    habe aber nun am anfang schon direkt tolle fehlermeldungen bekommen:

    error C2512: 'std::vector' : no appropriate default constructor available
    vliegreizen.h(11) : error C2065: 'string' : undeclared identifier
    vliegreizen.h(11) : error C2065: 'string' : undeclared identifier

    header vliegreizen

    #include <fstream> // open file
    #include <iostream>
    #include <vector> 
    
    class Vliegreizen{
    private:
    	int gewicht;
    	int gewichtTotaal;
    	int id;
    	int groepsKode;
    	std::vector<string> data;
    
    public:
    	Vliegreizen();
    	void loadAanvragen();
    	void verwerkAanvragen();
    	void reserveringen();
    	void annuleringen();
    };
    
    #include "Vliegreizen.h"
    using namespace std;
    
    Vliegreizen::Vliegreizen(){
    	int gewicht = 0;
    	int gewichtTotaal = 0;
    }
    
    void Vliegreizen::loadAanvragen(){
    	ifstream readFile( "Aanvragen.txt" );
        if( !readFile.is_open() )
        {
            cout << "Cannot open file" << endl;
        }
    	else
    	{
    		cout << "Open file" << endl;
    	}
    
    	char zeile [30]; // max 30 characters
    	while(readFile.getline (zeile, 500)){
    		//data.push_back(zeile);
    	}
    
    	readFile.close();
    }
    

    ich verstehe nicht was ich hier falsch gemacht haben soll! in meinem buch kann man einen vector so benutzen.



  • PauleJS schrieb:

    error C2512: 'std::vector' : no appropriate default constructor available
    vliegreizen.h(11) : error C2065: 'string' : undeclared identifier
    vliegreizen.h(11) : error C2065: 'string' : undeclared identifier

    Schau dir einmal diese 3 Fehlermeldungen an. C2065 bedeutet : "Der angegebene Bezeichner wurde nicht deklariert".
    Du includierst zwar <vector> , jedoch nicht <string> . Da du außerdem vernünftigerweise kein using namespace std; in die Header-Datei geschrieben hast, sollte es anschließend auch std::vector<std::string> data; heißen.



  • Vicious Falcon schrieb:

    PauleJS schrieb:

    error C2512: 'std::vector' : no appropriate default constructor available
    vliegreizen.h(11) : error C2065: 'string' : undeclared identifier
    vliegreizen.h(11) : error C2065: 'string' : undeclared identifier

    Schau dir einmal diese 3 Fehlermeldungen an. C2065 bedeutet : "Der angegebene Bezeichner wurde nicht deklariert".
    Du includierst zwar <vector> , jedoch nicht <string> . Da du außerdem vernünftigerweise kein using namespace std; in die Header-Datei geschrieben hast, sollte es anschließend auch std::vector<std::string> data; heißen.

    o man ich brauche noch viel übgung in c++^^ hast total recht gehabt und nun arbeitet es fehlerfrei

    besten dank!



  • will jetzt ab zeile 1 in einem abstand von jeweils 5 zeilen immer eine neue zeile mit einem int wert hinzufügen! bekomme aber immer fehlermeldungen, oder die schleife ist unendlich lang.

    lese also folgende datei ein:

    Andreas Müller
    95
    1
    
    Fussball Verein HSV
    8763
    34
    
    Kegelclub SIXT
    1264
    15
    

    dazu dieser code

    #include <fstream>
    #include <string>
    #include <vector>
    #include <iostream>
    
    using namespace std;
    
    void main (void){
    	string test = "test";
    	vector<string> data;
    
    	ifstream readFile( "inFile.txt" );
    
    	char zeile [30]; // max 30 characters
    	while(readFile.getline (zeile, 500)){
    		data.push_back(zeile);
    	}
    
    	vector<string>::iterator pos;
    	data.at(1) = data.push_back(test); //beginnend von zeile 1 soll in abstand von 5 zeilen eine neue zeile eingefügt werden
    
    	for (pos = data.begin(); pos != data.end(); ++pos){
    		cout << *pos << endl;
    	}
    
    	readFile.close();
    }
    

    dieses beispiel soll jetzt erstmal nur einen string einfügen. später soll aber eine int eingefügt werden, denke dieser muss dann erst in einen string konvertiert, oder nicht?

    besten dank im voraus für die hilfe!!



  • PauleJS schrieb:

    // ...
    	char zeile [30]; // max 30 characters
    	while(readFile.getline (zeile, 500)){
    

    Hallo PauleJs,

    wieso dieser Code - wo lernt man sowas? Niemand hier hat Dir geraten, char-Arrays zu benutzen. Man macht nur Fehler - so wie Du in diesem Fall.

    Wir haben hier gearde einen ellenlangen Thread zum Thema string versus char[].

    ratlos 😕
    Werner


Anmelden zum Antworten