Drücken der Pfeiltaste wandelt Textdatei in Binärdatei um
Verfasst: Mi Nov 11, 2009 10:22 pm
Mir ist leider keine bessere Überschrift eingefallen. Ich entwickle momentan eine Klasse die einen Menschen darstellen soll. Dieser Mensch kann für verschiedene Tätigkeiten in Frage kommen, oder halt auch nicht. Das ganze läuft auf ein Programm hinaus das mir automatisch eine Liste generiert, um verschiedene Personen für vier verschiedene Tätigkeiten einzuteilen. Dabei muss berücksichtigt werden, das eine Person nicht zwei Tätigkeiten gleichzeitig machen kann und auch nicht mehrmals hintereinander dran sein soll und an bestimmten Tagen auch verhindert sein kann. Meine Klasse nimmt die Personen auf und schreibt sie in eine Datei. So viel am Rande, hier der Abschnitt der mir Problem macht:
Das ganze funktioniert wunderbar, so lange ich nicht bei der Eingabe des Namens auf eine der Pfeiltasten oder F-Tasten drücke und mit Enter bestätige.
Rufe ich danach nämlich die handle_file Funktion auf, um die Eingaben in die Datei zu schreiben, wird aus meiner Textdatei eine Binärdatei. Das ist natürlich unerwünscht und kann mir die ganze Liste unbrauchbar machen.
Wie kann ich mein Programm dazu zwingen, mir in jedem Fall nur Textelemente in die Datei zu schreiben? Das kann auch ein Errorcode sein, immer noch besser, als die ganze Datei zu schrotten.
Gruß Bebu
Code: Alles auswählen
void inputname() //Liest den Nachnamen der Klassenstruktur ein(GETESTET/ABGESCHLOSSEN)
{
while(1)
{
cout << textname;
cin >> person.name;
if (cin.good())
{
clear();
if (Debug == true)
{
cout << "Streamstatus OK bei inputname()" << endl;
}
break;
}
else
{
clear();
if (Debug == true)
{
cout << "Streamstatus BAD bei inputname()" << endl;
}
}
}
}
int handle_file() //Dateizugriff-Datei öffnen/schließen--Neuer Bereich oder Änderung(CRITICAL BUG!!!!)
{
ofstream file; //Dateiobjekt erzeugen
file.open(filename.c_str(), ios_base::out | ios_base::app);
if (!file)
{
cerr << "CRITICAL ERROR: Could not open File " << filename << endl;
return 1;
}
file << "SECTION_START" << endl;
file << "id=" << person.id << endl;
file << "name=" << person.name << endl;
file << "vorname=" << person.vorname << endl;
file << "buehne=" << handle_enum(person.buehne) << endl;
file << "mikro=" << handle_enum(person.mikro) << endl;
file << "tuer=" << handle_enum(person.tuer) << endl;
file << "anlage=" << handle_enum(person.anlage) << endl;
file << "SECTION_END" << endl;
file.close();
return 0;
}
string handle_enum(int i) //Eingaben der Aufzählung lesbar für Datei umwandeln(GETESTET/ABGESCHLOSSEN)
{
if (i==0) return "NO";
else if (i==1) return "YES";
else if (i==2) return "JUMPER";
else
{
cerr << "UNCRITICAL-ERROR in Function \"handle_enum()\"" << endl;
cerr << "Given INT is not in allowed range" << endl;
return "ERROR";
}
}
Rufe ich danach nämlich die handle_file Funktion auf, um die Eingaben in die Datei zu schreiben, wird aus meiner Textdatei eine Binärdatei. Das ist natürlich unerwünscht und kann mir die ganze Liste unbrauchbar machen.
Wie kann ich mein Programm dazu zwingen, mir in jedem Fall nur Textelemente in die Datei zu schreiben? Das kann auch ein Errorcode sein, immer noch besser, als die ganze Datei zu schrotten.
Gruß Bebu