c++ Dateien einlesen und Array erzeugen



  • Hallo zusammen,
    Ich bin total verzweifelt und im Netz hab ich auch nichts verständliches gefunden und bräuchte mal eure hilfe. Es geht um einen Beleg den ich fürs Studium fertigen muss. Ich hab eine text-datei die so aussieht
    Ebara4WN7
    50 22
    40 30
    30 36
    20 42
    10 44
    451.32

    Ebara4WN14
    50 42
    40 60
    30 74
    20 83
    10 88
    655.99

    .
    .
    .
    und so weiter
    .

    die erste Zeile stellt jeweils einen Namen dar, die darauffolgenden jeweils höhe und liter (welche wiederum eine kennlinie darstellen) und in der letzten Zeile ist jeweils der Preis vorhanden.
    einlesen und ausgeben bzw. speichern bekomme ich im normalfall hin.
    Vorgegeben sind einmal
    struct kennlinie
    {
    int liter; /* Foerdermenge pro Minute /
    int hoehe; /
    in Meter /
    };
    struct pumpe
    {
    char name[20]; /
    Name der Pumpe /
    kennlinie pkt[5]; /
    Kennlinie aus 5 Punkten /
    float preis; /
    in Euro */
    };

    wie bekomme ich es aber hin die bestimmten zeilen bzw werte zu trennen, und separat in einem array abzulegen und damit zu rechnen[code="cpp"]. Beim zeilenweisen Einlesen funktioniert das bei mir so nicht da ja namen,oder werte öfters vorkommen.
    Ich wäre für jederlei tipps dankbar 🙂



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (alle ISO-Standards) in das Forum C (alle ISO-Standards) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Name, 5 Kennlinienzeile, Preis, dann eine Leerzeile. Sieht doch ziemlich regelmäßig aus, wo ist das Problem?


  • Mod

    Bist du sicher, dass das kein C sein soll? Technisch gesehen ist es zwar C++, aber das liegt bloß an einem einzigen fehlenden Wort, dass der offensichtlich grauenhaft schlechte Lehrer (float für Geldbeträge? WTF?) auch aus Unwissenheit vergessen haben könnte. Ansonsten solltest du dein Geld zurück verlangen, denn das hier hat mit C++ nichts zu tun. Sogar die Kommentare sind in einem alten C-Stil, der bei ihrer Positionierung hier im Code ein sicheres Zeichen ist, dass der Autor zuletzt um das Jahr 1980 herum etwas gelernt hat.



  • Nein ist C++. Ich studiere im Moment Maschinenbau da muss ich halt für Informatik diesen Beleg fertigen...
    Nochmal zu meiner Frage;

    einlesen und ausgeben funktioniert an sich so ganz gut:

    #include <iostream>
    #include <fstream>
    #include <string.h>
    #include <sstream>
    using namespace std;
    struct kennlinie{
    int liter; /* Foerdermenge pro Minute /
    int hoehe; /
    in Meter /
    };
    struct pumpe{
    char name[20]; /
    Name der Pumpe /
    kennlinie pkt[5]; /
    Kennlinie aus 5 Punkten /
    float preis; /
    in Euro */
    };

    int main()
    {
    ifstream pumpe("pumpen.txt");
    string zeile;
    if(pumpe.is_open())
    {

    while(getline(pumpe, zeile))
    {
    cout << zeile << endl;
    }
    stringstream zeilenpuffer(zeile);

    char name[20];
    zeilenpuffer >> name;
    }
    else if(!pumpe)
    {
    cout<< "Eingabe-Datei kann nicht geöffnet werden\n"<<endl;
    }
    return 0;
    }

    Nur kann ich nicht weiterrechnen bzw beim abspeichern in ein 2dArray funktioniert das alles irgendwie nicht da das Programm klemmt und so keine Unterscheidungen machen kann.(also unterscheidet er nicht was was ist) Ich komme einfach nicht weiter. ich weiß ich bin nicht der schlauste im Thema C++. aber kleine vorschläge oder tipps würden mir vielleicht weiterhelfen.



  • Nichts von deiner Problembeschreibung kommt im Code vor.



  • Hi polopo,

    ein paar Anmerkungen und Tipps:

    - bitte benutze Codetags. Damit bleibt dein Code leserlich.

    - dein Stringstream ist nach der while Schleife, also verarbeitest du da immer nur die letzte Zeile.

    - warum char[20] wenn du doch c++ benutzt?

    - Hier eine Diskussion bei Stack Overflow, bei der es um dein eigentliches Problem geht, ich fürchte du hast keine Ahnung wo nach du genau suchen musst.

    - "pumpe" als Variablen Namen, wenn es auch ein Struct Namens "pumpe" gibt, halte ich für äußerst unschön.



  • Hallo polopo,

    Du schreibst: '... ist C++.' Ok - ich knalle Dir mal ein fertiges Programm hin, welches Elemente aus der Sprache C++ nutzt! Probiere es bitte mal aus und berichte uns Deine Erfahrungen damit. Mehr dazu vielleicht heute abend.

    #include <array>
    #include <fstream>
    #include <iostream>
    #include <string>
    #include <vector>
    
    struct kennlinien_punkt // eigentlich ein Punkt auf einer Kennlinie!
    {
        int liter_; // Foerdermenge in [l/min]
        int hoehe_; // .. bei dieser Foerderhoehe in [m]
    };
    
    struct pumpe
    {
        std::string name_;  // Name der Pumpe; char[20] als Member zur Ablage eines Namens ist kein C++!
        std::array< kennlinien_punkt, 5 > kennlinie_;
        float preis_; // Preis in Euro; als float Na ja!
    };
    
    // das sind die Lese-Funktionen für den Kennlinienpunkt und die Pumpe
    std::istream& operator>>( std::istream& in, kennlinien_punkt& kp )
    {
        return in >> kp.liter_ >> kp.hoehe_;
    }
    std::istream& operator>>( std::istream& in, pumpe& p )
    {
        getline( in, p.name_ );
        for( auto& kp: p.kennlinie_ )
            in >> kp;
        in >> p.preis_;
        return in;
    }
    
    int main()
    {
        using namespace std;
        vector< pumpe > pumpen; // viele Pumpen
        ifstream datei("pumpen.txt");
        if( !datei.is_open() )
        {
            cout << "Kann die Datei nicht oeffnen" << endl;
            return 0;
        }
        for( pumpe p; datei >> ws >> p; )  // Bem. zu 'ws': evt. Leerzeilen überlesen
            pumpen.push_back( p );
    
        cout << pumpen.size() << " Pumpen eingelesen" << endl;
        return 0;
    }
    


  • Hallo nochmal zusammen;
    Ich weiß, ich stelle mich gerade total blöd dar, aber ich bin wirklich ein blutiger Anfänger.Die Fähigkeit Informatik zu verstehen klappt nicht so richtig.. Aber wieder zurück.
    Der erste Teil; also dieser ist vorgegeben:

    struct kennlinie{ 
    int liter; /* Foerdermenge pro Minute */ 
    int hoehe; /* in Meter */ 
    }; 
    struct pumpe{ 
    char name[20]; /* Name der Pumpe */ 
    kennlinie pkt[5]; /* Kennlinie aus 5 Punkten */ 
    float preis; /* in Euro */ 
    };
    

    Wir sollen diesen Teil genauso verwenden.Das ist nichts was ich selber zusammengebastelt habe. Deshalb verstehe ich nicht wie es sein kein, dass mein Prof. das für C gemacht haben soll,denn wir haben nur ein einziges Semester und arbeiten seit beginn mit C++..
    Danke Werner Salomon für deinen Code aber ich komme mit diesem etwas durcheinander. Der will sich so erst gar nicht öffnen lassen.

    Und in letzten Teil hast du Vektoren benutzt. Wir sollen die Daten mit einer anderen Textdatei zusammen einlesen und anschließend in einer 2dMatrix ausgeben. 
    [10]*[10] Matrix wäre das in meinem Fall. ich will niemanden auffördern den Code für mich zu programmieren deshalb hab ich den zweiten Teil hier weggelassen damit ich nur ansatzweise verstehe wie ich vorangehen soll. Was aber glaube ich schwerer wird als erwartet.
    Wie gesagt ich habe des öfteren Versucht nur die Datei einzulesen was auch funktioniert hat, aber mit den Werten weiterzurechnen bzw in ein Array abzuspeichern funktioniert einfach nicht  :( 
    [code]
    
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <array>
    using namespace std;
    struct kennlinie{ 
    int liter; /* Foerdermenge pro Minute */ 
    int hoehe; /* in Meter */ 
    }; 
    struct pumpe{ 
    char name[20]; /* Name der Pumpe */ 
    kennlinie pkt[5]; /* Kennlinie aus 5 Punkten */ 
    float preis; /* in Euro */ 
    }; 
    int main()
    {
    	int i = 0, j = 0;
    	string line;
    	string array[10][10];
    
    	ifstream ratesfile(pumpen.txt");
    	if(ratesfile.is_open())
    
    		std::cout << " \n"; 
    	else
    
    		std::cout << "Datei kann nicht geöffnet werden\n"; 
    
    	for(int i = 0; i < 10; ++i) 
    	{
    		for(int j = 0; j < 10; ++j) 
    		{
    
    			if(getline(ratesfile, line ))
    			{
    				array[i][j] = line;
    				cout << array[i][j] << endl;
    			}
    		}
    	}
    
    	cin.get();
    
    	for(int i = 0; i < 10; ++i)
    	{
    		cout << array[i][0] << endl;
    		cout << array[i][1] << endl;
    	}
    	cin.get();
    
    	for(int i = 0; i < 10; ++i)
    	{
    		for(int j = 0; j < 10; ++j)
    		{
    			cout << array[i][j] << endl;
    		}
    	} 
    
    	ratesfile.close();
    
    	return 0;
    }
    

    auch der code (den ich aus dem Internet habe) gibt mir allein die Datei aus nicht in einem Array 😕 😕



  • Schau dir mal die Farbe deines Codes genau an.

    ifstream ratesfile(pumpen.txt");
    


  • Werner Salomon hat eine C++ Lösung für dein (Programmier-) Problem gepostet, welches du geschildert hast, nicht für die von deinem Prof gestellte Aufgabe.

    Wie wäre es, wenn du die Aufgabe(n) so postest, wie du sie gestellt bekommen hast, wir können nicht wissen das du die Daten in einer speziellen Form weiter verarbeiten sollst/musst.

    Auch wenn du evt. andere Datenstrukturen benutzen sollst / musst, zeigt dir das Programm von Werner Salomon doch, wie es algorithmisch zu lösen ist.



  • ok, dann poste ich mal die komplette Aufgabe

    Ein Unternehmen für Garten- und Landschaftsbau baut Bewässerungsanlagen für Gärten. Zur Förderung von Wasser aus vorhandenen Brunnen muss eine geeignete Pumpe gewählt werden. Die Brunnenpumpe muss leistungsstärker sein, je höher und mehr Wasser aus dem Brunnen gefördert wird. Jede Brunnenpumpe besitzt eine Kennlinie, die aussagt, bei welcher Förderhöhe wie viel Wasser gepumpt wird. Die Daten eines Punktes auf der Kennlinie erfassen wir mit folgender Struktur:

    struct kennlinie
    {
    int liter; /* Foerdermenge pro Minute /
    int hoehe; /
    in Meter */
    };

    Zur Vereinfachung sollen die Kennlinien unserer Brunnenpumpen anhand von 5 darauf befindlichen Punkten erfasst werden (Beispiel: Diagramm zur Leistung einer Pumpe mit 5 Punkten).

    Die Meterangabe beim letzten Index entspricht der maximalen Förderhöhe der Pumpe. Als weitere Eigenschaft besitzt jede Pumpe einen Preis und einen Namen:

    struct pumpe
    {
    char name[20]; /* Name der Pumpe /
    kennlinie pkt[5]; /
    Kennlinie aus 5 Punkten /
    float preis; /
    in Euro */
    };

    In der Datei pumpen.txt werden die Daten für 9 verschiedene Brunnenpumpen bereitgestellt. Lesen Sie die Daten aus der Datei ein und speichern Sie diese unter der Verwendung der Struktur pumpe in einem Array. Die Datei nennt für jede Pumpe erst den Namen der Pumpe, dann die 5 Punkte der Kennlinie bestehend aus der Anzahl der Liter und der Angabe der Höhe und danach der Preis der Pumpe.

    Ein Brunnen besitzt drei Eigenschaften (zur Verdeutlichung siehe Abbildung Skizze Tiefbrunnen).

    Die Abmessungen von 10 unterschiedlichen Brunnen befinden sich in der Datei brunnen.txt und sollen mithilfe folgender Struktur in einem Array gespeichert werden:

    struct brunnen
    {
    float foerderhoehe; /* in m /
    float wasserstandshoehe; /
    in m /
    float brunnendurchmesser; /
    in m */
    };

    Achtung! Die Anzahl der Brunnen sowie die Pumpen sind als Konstanten in der main()-Funktion zu speichern und im Programm an allen nötigen Stellen zu nutzen. Die Inhalte der angegebenen Datein entspricht diesen Vorgaben. Verwenden Sie für PI den Wert 3.1415. Das Benutzen der Mathematikbibliothek ist nicht zulässig (und auch nicht nötig). Zur weiteren Vereinfachung, gehen Sie bitte entgegen der physikalischen Gesetzte davon aus, die Pumpe unabhängig vom Füllstand des Brunnens stets die gesamte Förderhöhe überwinden muss.

    Die Berechnung
    Erstellen Sie als Erstes eine Matrix, die für alle Brunnen speichert, wie viel Zeit jede der 9 Pumpen benötigt, um den jeweiligen Brunnen leer zu pumpen. Geben Sie den Inhalt der Matrix anschließend aus. Die Zeitangabe in der Ausgabe enthält nur Minuten, wenn die benötigte Zeit kleiner als 60 Minuten ist. Die Zeitangabe enthält Stunden und Minuten, wenn die benötigte Zeit kleiner als 1 Tag ist. Die Zeitangabe enthält Tage, Stunden und Minuten, wenn die benötigte Zeit größer als 1 Tag ist. Übrige Sekunden können ignoriert bzw. abgerundet werden. Kann die Pumpe die geforderte Höhe nicht überwinden, tragen Sie "n. e." - nicht einsatzfähig - in die Ausgabe ein.

    Fertigen Sie nun eine Ausgabe für einen Preis-Leistungsvergleich in Form einer 2. Matrix an. Zeigen Sie für alle Brunnen den Preis der Pumpe an, die das beste Preis-Leistungs-Verhältnis besitzt (Index aus Preis*Zeit) und eingesetzt werden kann, in Euro an. Für alle anderen Pumpen soll die Matrix einen prozentualen Vergleichswert anzeigen. Der kleinste Preis*Zeit-Index (je Zeile) entspricht 100%. Tragen Sie, wenn die Pumpe nicht einsatzfähig ist, "0" in die Matrix ein.

    Erstellen Sie Ihre Ausgabe exakt so, wie in folgender Abbildung zu sehen, ausgefüllt mit allen Werten
    (10 x 10 matrix die erste zeile die namen der pumpen
    die erste spalte Brunnen Zahl( Zahl= volumen jeweils)



  • Da kann dein Prof noch so viel von C++ reden, dass ist eine astreine C Aufgabe. Habe sowas leider schon zu häufig bei Maschinenbau bzw. E-Technik Studenten gesehen.



  • Hallo polopo,

    polopo schrieb:

    Der erste Teil; also dieser ist vorgegeben:

    struct kennlinie{ 
    int liter; /* Foerdermenge pro Minute */ 
    int hoehe; /* in Meter */ 
    }; 
    struct pumpe{ 
    char name[20]; /* Name der Pumpe */ 
    kennlinie pkt[5]; /* Kennlinie aus 5 Punkten */ 
    float preis; /* in Euro */ 
    };
    

    Wir sollen diesen Teil genauso verwenden.Das ist nichts was ich selber zusammengebastelt habe. Deshalb verstehe ich nicht wie es sein kein, dass mein Prof. das für C gemacht haben soll,denn wir haben nur ein einziges Semester und arbeiten seit beginn mit C++..

    Im Ernst jetzt: wer als Speicher für einen Namen ein char[]-Feld benutzt, programmiert in C. Und bitte sage das auch so Deinem Prof! Auch wenn das ganze evt. wg. ein oder zwei Details oder Key-Words mit einem C++-Compiler übersetzt werden muss. Und lass Dir nicht einreden, dass das einfacher wäre - besser für Anfänger geeignet. Mit string und vector wird es wesentlich einfacher!
    Woher weißt Du, dass Du da C++ lernst? Ich nehme an, der Titel der Vorlesung lautet so - aber sonst? was macht Dich so sicher?

    polopo schrieb:

    Danke Werner Salomon für deinen Code aber ich komme mit diesem etwas durcheinander. Der will sich so erst gar nicht öffnen lassen.

    was bedeutet 'lässt sich nicht öffnen'? Du solltest den Code zunächst mal übersetzten und wenn es da Fehlermeldungen gibt, so teile sie bitte mit. Welche Entwicklungsumgebung benutzt Du?

    polopo schrieb:

    Und in letzten Teil hast du Vektoren benutzt. Wir sollen die Daten mit einer anderen Textdatei zusammen einlesen und anschließend in einer 2dMatrix ausgeben.
    [10]*[10] Matrix wäre das in meinem Fall.

    Oh je - eine zweidimensionale Matrix mit festen Grenzen und das für eine Applikation dieser Art. Das hat man vielleicht in den 80'er Jahren des letzten Jahrhunderts so gemacht. Wenn Du C++ lernen willst (nicht nur einen Schein für komisches C), dann beschäftige Dich zuerst mit std::vector<> und std::string .

    polopo schrieb:

    Wie gesagt ich habe des öfteren Versucht nur die Datei einzulesen was auch funktioniert hat, aber mit den Werten weiterzurechnen bzw in ein Array abzuspeichern funktioniert einfach nicht

    was kein Wunder ist, denn Du hast die Werte aus der Datei gar nicht gelesen, sondern nur die Zeichen aus der Datei in Deinen Speicher kopiert. Wenn Du sie lesen willst, so müssen die Zeichenfolgen interpretiert werden (siehe meine Leseroutinen oben). Wenn Du eine Zahl liest, so muss die Zeichenfolge '4', '5', '1', '.', '3' und '2' erst zu einem Typ float(besser double, noch besser ein Geldtyp) zusammengebaut werden.

    aus der Aufgabenstellung:

    Prof schrieb:

    Achtung! Die Anzahl der Brunnen sowie die Pumpen sind als Konstanten in der main()-Funktion zu speichern und im Programm an allen nötigen Stellen zu nutzen.

    Auch das ist der Geist von C (und Fortran, die 1960'er lassen grüßen) und selbst in C ist dies nicht erstrebenswert!

    Prof schrieb:

    Verwenden Sie für PI den Wert 3.1415. Das Benutzen der Mathematikbibliothek ist nicht zulässig

    Wieso nicht? Sollen hier die Studierenden absichtlich unwissend gehalten werden?

    Für die erste Matrix braucht man doch eine Funktion (besser Methode der pumpe ), die mit Vorgabe der Förderhöhe die Pumpleistung zurück gibt. Davon ist aber keine Rede! Ließe sich mit C++-Mitteln übrigens sehr schön lösen.

    Wenn wir Dir helfen sollen, so versuche bitte das angehängte Code-Schnipsel zum Laufen zu bringen. Falls es sich nicht generieren lässt, so sage bitte in welcher Zeile mit welchem Fehler. (Ja - ich halte mich an die Vorgaben, aber rede mal mit Deinem Prof - er soll sich doch mal hier melden) Und Du bist auch nicht blöd, sondern nur ein unglücklicher Anfänger, der einen rückständigen Prof hat.

    Gruß
    Werner

    #include <iostream>
    #include <fstream>
    #include <string>
    
    struct kennlinie {
        int liter; /* Foerdermenge pro Minute */
        int hoehe; /* in Meter */
    };
    struct pumpe {
        char name[20]; /* Name der Pumpe */
        kennlinie pkt[5]; /* Kennlinie aus 5 Punkten */
    float preis; /* in Euro */
    }; 
    
    std::istream& operator>>( std::istream& in, kennlinie& kp )
    {
        return in >> kp.liter >> kp.hoehe;
    }
    
    int main()
    {
        using namespace std;
        ifstream pumpenDatei("pumpen.txt");
        if( !pumpenDatei.is_open() )
        {
            cout << "kann Datei nicht oeffnen" << endl;
            return 0;
        }
        pumpe p;
        pumpenDatei >> ws; // ggf. Leerzeile(n) überlesen
        pumpenDatei.getline( p.name, sizeof(p.name) );
        for( int i=0; i<5; ++i ) {
            pumpenDatei >> p.pkt[i];
        }
        pumpenDatei >> p.preis;
    
        cout << "Der Preis ist " << p.preis << endl; // da sollte nachher 451.32 ausgegeben werden
        return 0;
    }
    


  • Deshalb verstehe ich nicht wie es sein kein, dass mein Prof. das für C gemacht haben soll,denn wir haben nur ein einziges Semester und arbeiten seit beginn mit C++.

    Dein Professor ist schlicht inkompetent. Vermutlich hat er 1995 C mit Klassen gelernt und unterrichtet jetzt genau das. Wir haben aber 2018, C++11 wird 7 Jahre alt und C++ hat sich weiterentwickelt.


  • Mod

    manni66 schrieb:

    Deshalb verstehe ich nicht wie es sein kein, dass mein Prof. das für C gemacht haben soll,denn wir haben nur ein einziges Semester und arbeiten seit beginn mit C++.

    Dein Professor ist schlicht inkompetent. Vermutlich hat er 1995 C mit Klassen gelernt und unterrichtet jetzt genau das. Wir haben aber 2018, C++11 wird 7 Jahre alt und C++ hat sich weiterentwickelt.

    Das hier gezeigte C ist älter als 1995. Und es ist noch nicht einmal gutes C. Es wurden einige Probleme angesprochen. Unpassende Datentypen. Unpassende Datenstrukturen. Altertümlicher Programmaufbau. Da braucht man gar nicht mehr ins Details gehen, das ist einfach nur schlecht, schon von ganz weit weg gesehen.

    Das macht weder Spaß, noch ist es sinnvoll. Man könnte mit wesentlich weniger Code ein wesentlich besseres Programm schreiben und bräuchte dazu sogar noch wesentlich weniger Wissen. Wenn es denn nur das richtige Wissen wäre, anstatt dessen, was hier gelehrt wurde.

    Und das sage ich unter der Voraussetzung, dass das wohl C sein soll. Wenn das C++ sein soll, dann ist es schlicht eine Katastrophe.



  • Hallo nochmal zusammen,
    vorweg vielen Dank für die große und detaillierte Antwort WernerSalamon.
    Wie gesagt ich studiere Maschinenbau und wir haben Informatik nur ein Semester über. In den Vorlesungen sowie Übungen wird nur von C++ geredet, benutzen auch in der uni c++ Programme. Ich selber habe mir das Programm Dev-C++ runtergeladen. Code::Blocks funktionierte nicht bei mir aber naja ist ein anderes Thema. Also deshalb war ich der festen Überzeugung dass wir nur mit c++ arbeiten. Wir hatten ja sonst nie was anderes dran 😕 aber dann hat sich ja das auch geklärt
    WernerSalamon Beim ersten Code bekomme ich Fehlermeldungen wie
    17 10 [Error] 'array' in namespace 'std' does not name a template type
    In function 'std::istream& operator>>(std::istream&, pumpe&)':
    17 10 [Error] 'array' in namespace 'std' does not name a template type
    29 [Error] range-based 'for' loops are not allowed in C++98 mode
    29 [Error] 'struct pumpe' has no member named 'kennlinie_'

    Aber der zweite Code funktioniert bei mir einwandfrei. Nur habe ich eine frage der code so gibt mir ja den preis von der ersten Pumpe an wieso steht dann in der for schleife 5 ? 😕 und so musss ich dass einzeln für jede pumpe machen oder? 😕
    Ich weiß ich nerve mit meinen teilweise "blöden" Fragen, aber wie gesagt ich verstehe das meiste nicht.
    Deshalb noch zu guter Letzt kann ich hier im Forum eine Bilddatei einfügen? wenn ja, wie? Dann könnte ich nämlich die matrix anhängen wie sie zum Schluss aussehen muss.
    Zusammen mit dieser Frage meine letzte Frage. Ich muss ja alles in ein Array bzw matrix abspeichern wie soll das wiederrum gehen? 😕



  • 17 10 [Error] 'array' in namespace 'std' does not name a template type

    Du hast deinen Compiler nicht auf C++11 oder besser eingestellt. Benutze -std=c++11 (oder 14 oder 17). Nein, ich weiß nicht, wo das in DevC++ eingestellt wird.



  • Wenn seine Version von DevC++ überhaupt einen aktuellen compiler besitzt (was ich bezweifle).
    Wahrscheinlich ist es ein veralteter gcc, der die neuen Standards nicht kennt.


  • Mod

    asdfsx schrieb:

    Wenn seine Version von DevC++ überhaupt einen aktuellen compiler besitzt (was ich bezweifle).
    Wahrscheinlich ist es ein veralteter gcc, der die neuen Standards nicht kennt.

    9 [Error] range-based 'for' loops are not allowed in C++98 mode


Anmelden zum Antworten