Wo liegt der Fehler (wenig Code)
-
Sorry das ich wieder störe aber ich finde den Fehler einfach nicht, hier erstmal der Code
#include <fstream> #include <iostream> #include <string> using namespace std; int main() { char player[5]; ifstream logfile("file"); for (string ReadString; getline(logfile, ReadString);) if(ReadString.size() > 34) { // Ausgabefile ofstream convertedLogfile; // Lesezeiger in der akt. Zeile auf Position 34 setzen logfile.seekg(34, ios::cur); // ID auslesen und in player speichern; logfile.getline(player, 4); // Testweise player ausgeben, abgeschlossen durch ein "ende" cout<<player<<"ende"<<endl; // Jeweiliges playerlogfile öffnen und Zeile anhängen convertedLogfile.open(player,ios::app); convertedLogfile<<ReadString<<endl; convertedLogfile.close(); } logfile.close(); return(0); }
Erklärung:
- Eine Datei soll durchsucht werden
- Wenn eine Zeile länger als 34 Zeichen ist sollen die nächsten 4 Zeichen in player gespeichert werden (34-38)
- Die Datei die den Inhalt der Variable player als Namen hat soll geöffnet werden und der momentane String soll reinkopiert(angehangen) werden.Nur funktioniert das ganze nicht, gibt keine Fehlermeldung nur arbeitet total wirr, ist vielleicht von der Idee her im Code was grundsätzlich falsch? Müsste es so gehen wie beschrieben?
Gruß
Printkey
-
Fehler eingegrenz:
Aber dieser Stelle stoppt er schlagartig und hört auf:
logfile.getline(player, 4);
Nur warum?
-
getline(..., 4); holt nicht vier Zeichen ab der aktuellen Cursor-Position, sondern die ersten vier Zeichen der aktuellen Zeile.
-
Hm ach so.
Was hab ich noch für Möglichkeiten? Mir fällt nur ein das man zum 34. Zeichen springen könnte und dann 4x per get() die Zeichen einliest, zu einem string konvertiert und dann zu einem char casted aber das ist doch dumm.
-
Hallo,
du liest alles ein und benutzt Dinge wie beispielsweise string.substr()...
Infos darüber gibts hier:
http://www.cppreference.com/cppstring.html
-
Danke dir Carsten das klappt ja wunderbar!
Die funktion ist echt toll