[c++] Fehlermeldung "nichtdeklarierter Bezeichner" & Wo binde ich am besten einen Dateinamen ein



  • Ich hab die Suchfunktion benutzt, aber die Frage ist etwas spezifisch folglich hab ich auch nichts passendes Gefunden.

    Ich möchte aus einer Datei deren Name ich über cin Eingebe, Daten auslesen und in ein dynamisches Array stecken.

    // Einlesen der Messelemente und Speichern derselben in ein mehrdimensionales, dynamisches Array
    
    #include "Incl_und_Konst.h" // Einbinden der benutzerdefinierten Headerdatei
    
    const int DATNAM=80;
    
    int main()
    {
    	//Definition der Datenobjekte
    	char DATPKT[DATNAM];
    	ifstream einPKT;
    	string nt;
    	double yt,xt;
    
    	vector <string> Nr;
    	vector <double> y;
    	vector <double> x;
    
    	//Eingabe Dateiname; Öffnen der Datei
    
    	cin.getline (datPKT, DATNAM);
    	einPKT.open (datPKT);
    
    	//Einlesen der Koordinaten von Datei
    
    	while (einPKT.eof()==0)
    	{   
    		einPKT >> nt >> yt >> xt;
    	        Nr.push_back(nt);
    		y.push_back(yt);
    		x.push_back(xt);
    	}
    
    	//Ausgabe am Bildschirm (Kontrolle)
    
    	for (int i=0; i < Nr.size(); i++)
    	{
    		cout << Nr[i] << y[i] << x[i] << endl;
    	}
    
    	//Schließen der Datei
    
    	einPKT.close();
    	return 0;
    
    }
    

    Dazu erhalte ich dann Folgende Fehlermeldung

    1>------ Erstellen gestartet: Projekt: Freie Stationierung Ansatz II, Konfiguration: Debug Win32 ------
    1>  EinlesenMesselemente.cpp
    1>einlesenmesselemente.cpp(21): error C2065: 'datPKT': nichtdeklarierter Bezeichner
    1>einlesenmesselemente.cpp(22): error C2065: 'datPKT': nichtdeklarierter Bezeichner
    1>einlesenmesselemente.cpp(36): warning C4018: '<': Konflikt zwischen 'signed' und 'unsigned'
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
    

    Gut möglich das ich da komplett was übersehe.... ich sitzt schon zu lange dran glaub ich .....

    Jegliche Hilfe wird sehr dankbar angenommen.

    Ich hab den Code teilweise aus einem Buch, deshalb dazu noch ein paar Fragen.

    1. An welcher Stelle binde ich am besten die Eingabe des Dateinamens ein? Mir einer kleinen Abfrage "Bitte geben Sie den Namen der Datei ein" ect. ich bin mir sicher ihr Wisst was ich meine.
    2. Wäre das in dieser Form dann ein mehrdimensionales Array? Von X Zeilen (X=Anzahl Messwerte durch Leerzeichen getrennt) und Y Spalten (Y=Anzahl Spalten in der Datei) oder hab ich einen Denkfehler?
    3. Wenn meine Datei noch Bezeichnungen (Buchstaben) in der ersten Zeile hätte, wie würde ich die erste Zeile überspringen? Oder muss ich hier die basic_istream::ignore verwenden?

    Wäre für Hilfe wirklich Dankbar..... bin Anfänger und stoß da so langsam wirklich an meine Grenzen.

    Für den Modifizierten Quellcode (als Beispiel so das er mal Läuft) setz ich ein kleines Denkmal in meinen Garten 😉



  • Zu dem Fehler: C++ ist case sensitive (Es wird zwischen Groß- und Kleinschreibung unterschieden)
    DATPKT ist etwas anderes als datPKT

    1. Bevor du die Datei öffnest. Das kann auch als Kommandozeilenargument sein.
    Wenn du das lesen der Datei in einer extra Funktion machst, sollte die Funktion den Namen als Parameter mit bekommen. Die Abfrage wäre dann in der rufenden Funktion (main).

    2. So wie du es machst nicht. (Für einen besseren Rat kenne ich C++ nicht gut genug)
    Im Augenblick hast du drei Spalten. (Wobei ich einen string mit dem Bezeichner Nr etwas seltsam finde)

    3. Ein getline vor der Schleife sollte auch gehen. (vielleicht brauchst du die Bezeichner noch)



  • Danke DirkB, das hilft mir schon mal gewaltig weiter.
    Ich mach mich mal an die Umsetzung und schau mal wie weit mich das bringt 😉

    Falls jemand mir erklären könnte wie ich Punkt 2 richtig umsetzte wäre ich sehr dankbar.


Anmelden zum Antworten