Hilfe bei Variablen



  • vielen Dank für die links SeppJ.

    Habe versucht mich dort durchzuarbeiten, jedoch steig ich immer noch nicht dahinter.
    Zeile auslesen ist ja alles kein Problem aber der Rest...naja...

    Kannst du mir nicht ein Code-Beispiel geben? Falls nicht zu aufwendig?

    TIA



  • Sag doch, was du konkret nicht verstehst.



  • "gelesene Daten als Mapindex benutzen und dann den Buchstaben an diesem Mapindex ausgeben."

    die links gibt für mich keinen Aufschluss, wie den nun Daten aus einer .txt als Mapindex benutzt werden



  • Du hast ja geschrieben Zeile lesen kein Problem:

    string geleseneZeile; // ... angenommen der string ist schon von dir gefüllt
    map<string, string> meineMap;
    // Initialisierung mit den Werten ASDGH123 = a usw..
    
    string dasWasIchWill = meineMap[geleseneZeile];
    
    cout << dasWasIchWill << endl;
    

    #edit: Mit dem map Index könnten dir noch newlines Probleme bereiten.
    Kommt drauf an wie genau du die Zeile ausliest. Poste doch mal was du bisher hast wenn hiermit deine Fragen noch nicht beantwortet sind.



  • bin jetzt erstmal soweit gekommen:

    #include <iostream>
    #include <fstream>
    #include <string>
    #include <map>

    using namespace std;

    int main () {
    string line;
    ifstream file ("Test.txt");
    if (file.is_open())

    {
    while (! file.eof() )
    {
    getline (file,line);

    string line;

    map <string, string> liste;
    liste ["1:042042B230"]= "a" ;
    liste ["1:0108827DF6"]= "b" ;
    liste ["1:0108827DA0"]= "c" ;
    liste ["1:0108827DA9"]= "d" ;

    string result = liste [line];
    cout << result << endl;

    }
    file.close();
    }

    else cout << "Unable to open file";

    cin.get();

    }

    Wenn ich dies durchlaufen lasse, dann bekomme ich nur Zeichenumbrüche, entsprechend der Anzahl der Zeilenanzahl aus der .txt

    Wo ist der Fehler?
    Aso und danke erstmal für eure bisherige Hilfe. TOP!!!



  • Nimm bitte C/C++ Tags..

    #include <iostream>
    #include <fstream>
    #include <string>
    #include <map>
    
    using namespace std;
    
    int main () {
    string line;
    ifstream file ("Test.txt");
    if (file.is_open())
    
    {
    while (! file.eof() )
    {
    getline (file,line);
    
    string line;
    
    map <string, string> liste;
    liste ["1:042042B230"]= "a" ;
    liste ["1:0108827DF6"]= "b" ;
    liste ["1:0108827DA0"]= "c" ;
    liste ["1:0108827DA9"]= "d" ;
    
    string result = liste [line];
    cout << result << endl;
    
    }
    file.close();
    }
    
    else cout << "Unable to open file";
    
    cin.get();
    }
    

    Einrücken wäre auch eine gute Sache.

    Du erhältst nur Zeilenumbrüche weil in der map kein Element entsprechend dem gefütterten Index vorhanden ist und entsprechend nichts ausgegeben wird, der Zeilenumbruch entsteht durch das endl.

    Wie gesagt, das Problem sind die newlines die noch zusätzlich in der Datei sind.

    Entweder du entfernst sie nach dem einlesen der Zeile oder du schreibst die eben auch noch mit in den Index.


  • Mod

    #include <iostream>
    #include <fstream>
    #include <string>
    #include <map>
    
    using namespace std;
    
    int
    main ()
    {
      string line;                  // guck mal hier
      ifstream file ("Test.txt");
      if (file.is_open ())
    
        {
          while (!file.eof ())
    	{
    	  getline (file, line);
    
    	  string line;     // Und hier
    
    	  map < string, string > liste;
    	  liste["1:042042B230"] = "a";
    	  liste["1:0108827DF6"] = "b";
    	  liste["1:0108827DA0"] = "c";
    	  liste["1:0108827DA9"] = "d";
    
    	  string result = liste[line];
    	  cout << result << endl;
    
    	}
          file.close ();
        }
    
      else
        cout << "Unable to open file";
    
      cin.get ();
    }
    


  • DANKE SCHÖÖÖN!

    entfernen vom zweiten "string line" und es funktioniert!

    LG
    Mechtroniker


  • Mod

    mechatroniker schrieb:

    DANKE SCHÖÖÖN!

    entfernen vom zweiten "string line" und es funktioniert!

    LG
    Mechtroniker

    Weißt du denn auch, warum man es trotz der zwei string line compilieren konnte, es danach aber nicht mehr funktioniert hat? Du kannst hier etwas wichtiges über C++ lernen, wenn du dies verstehst.



  • nein das weiß ich nicht...

    wenn´s kurz geht kannst du mir das noch verraten...ansonsten find ich es aber auch nicht so wild...
    ihr habt mir bisher schon weiter geholfen als ich erwartet hätte


  • Mod

    mechatroniker schrieb:

    nein das weiß ich nicht...

    wenn´s kurz geht kannst du mir das noch verraten...ansonsten find ich es aber auch nicht so wild...
    ihr habt mir bisher schon weiter geholfen als ich erwartet hätte

    Das kann ich leider nicht kurz erklären, sonst hätte ich es getan. Ich kann dich da nur an Literatur verweisen. Schau mal in einem Lehrbuch nach Scope (zu deutsch Gültigkeitsbereich), Lebensdauer von Variablen und den Regeln zur Namensauflösung. Das dürfte alles zusammen in einem der Kapitel des Lehrbuchs stehen.


Anmelden zum Antworten