c++ strings in txt speichern

Hallo Jochen,

am einfachsten ist es, wenn du die Datei im „append“-Modus öffnest:
C++:
datei.open("vokabeln.txt", ios::out | ios:app);
Dadurch wird der Dateizeiger beim Öffnen auf das Ende der Datei gesetzt anstatt auf den Anfang.

Grüße, Matthias
 
Hallo alle zusammen.

So das erste Problem(speichern) habe ich dank Matthias Hilfe gelöst.
jetzt habe ich jedoch ein weiteres Problem.
Es geht darum dass ich das ganze wieder auslesen und überprüfen möchte.
Das ganze habe ich in eine do-while Schleife gesetzt die später so oft durch laufen soll,
wie eben Zeilen in der .txt stehen.
Auslesen und Überprüfung funktioniert eigentlich,
jedoch liest er immer die selben Zeilen aus.
Kann ich bei dem Befehl "getline();" irgendwie angeben welche Zeile er ausgeben soll?
Da sich englische und deutsche Wörter in der selben Datei befinden
(immer abwechselnd)
und zwischen jedem Wortpaar eine Zeile Abstand ist müsste ich z.B für das englische
Wort Zeile 1, 3, 5, ... auslesen. Weshalb die Zeilen Angabe sich nach jedem durch laufen um 2 erhöhen müsste.

So jetzt noch einmal in Kurzform für die "Lese-faulen":D

Frage1: Wie kann ich die Zeilen Anzahl einer .txt auslesen?
Frage2: Wie gebe ich an Welche Zeile das Programm auslesen soll?
Frage3: Wie sag ich dem Programm, dass die Zeilenangabe sich nach jedem Schleifen Durchlauf um 2 erhöht?

Hier noch mein bisheriger Ansatz.

Code:
int eingabe, anzahl, i=1, i1=1;

//Vokabel abfrage
                      
              case 2: cout<<"\n Vokabel abfrage.\n";
                      //Laden
                      do
                        { 
                      
                          ifstream file("vokabeln.txt");
                          std::string buffer1;
                          getline(file,buffer1);
                          std::string ger;
                          cout << "\n " << buffer1 <<": ";
                          cin >> ger;
                          std::string buffer2;
                          getline(file,buffer2);
                          file.close();
                      //überprüfung
                          if(buffer2 == ger)
                            {
                             cout << "\n Ihre Antwort ist richtig.\n";
                            }                      
                          else
                              {
                                cout << "\n Ihre Antwort ist falsch.";
                                cout << "\n Die korrekte Antwort lautet " << buffer2;
                                cout << "\n Geben Sie die korrekte Antwort 5 mal ein: \n";
                          
                                do
                                  {
                                    cout << " " << i1 << ": ";
                                    cin >> ger;
                                    i1++;                            
                                  }
                                while(i1<6);
                              }
                          }      
                      while();    
                        
                        
                        
                        
                        
                        
                        
                        
              break;
                   }
                   
    
    
    
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

Hat irgendjemand eine Idee?
 
Moin,

Frage1: Wie kann ich die Zeilen Anzahl einer .txt auslesen?
Frage2: Wie gebe ich an Welche Zeile das Programm auslesen soll?
Frage3: Wie sag ich dem Programm, dass die Zeilenangabe sich nach jedem Schleifen Durchlauf um 2 erhöht?

zu 1.: gesamte Datei einlesen und die Anzahl der Zeilen auf einer Variable zählen
zu 2.: wenn Du weißt, dass es die 20. Zeile sein soll, bis dort hin laufen und ab da einlesen
zu 3.: Zeilenzähler + 2 ...

Gruß
Klaus
 
Moin,



zu 1.: gesamte Datei einlesen und die Anzahl der Zeilen auf einer Variable zählen
zu 2.: wenn Du weißt, dass es die 20. Zeile sein soll, bis dort hin laufen und ab da einlesen
zu 3.: Zeilenzähler + 2 ...

Gruß
Klaus
Danke Klaus,
es ist nett dass du mir helfen willst leider hilft mir deine antwort nicht wirklich weiter.
Das Problem ist dass ich nicht weiß mit welchem Befehlen ich das ganze realisieren soll. z.B 20. Zeile auslesen. wie genau mach ich das? Muss ich da bei getline etwas angeben oder brauche ich einen anderen befehl dafür? es wäre nett wenn du mir ein beispiel code dazu geben könntest.
 
Hi.

Speichere am besten die Zeilen aus der Datei in einer Datenstruktur über die du einfach auf die entsprechende Zeile zugreifen kannst - z.B. einen std::vector.

C++:
std::vector<std::string> zeilen;
std::string zeile;

while (getline(file, zeile)) {
  zeilen.push_back(zeile);
}

// zu 1:
std::cout << "Anzahl Zeilen: " << zeilen.size() << std::endl;

// zu 2:
std::cout << "Zeile 20: " << zeilen[19] << std::endl;

// zu 3:
for (int i = 0; i+1 < zeilen.size(); i += 2) {
  ...
}
Gruß
 
Danke. Werde das gleich ausprobieren.

//edit: Hat Super funktioniert danke für die Hilfe
 
Zuletzt bearbeitet:
Zurück