fstream arbeitet nicht
-
hi
mein Problem ist Folgendes:
wxString name, name_string, alter, groese, gewicht; name=WxEdit4->GetValue(); name_string=name+".txt"; alter=WxEdit1->GetValue(); groese=WxEdit2->GetValue(); gewicht=WxEdit3->GetValue(); std::fstream filestr; filestr.open(name_string); name_string<<"hallo"; filestr.close();mit diesem Code Abschnitt sollten eigentlich diverse Eingaben ausgelesen. Der Name soll hier dann als Dateiname für eine .txt Datei fungieren. Allerdings funktioniert das einfach nicht. Die Datei wird einfach nicht erstellt. Wenn ich sie allerdings vorher manuell erstelle wird etwas reingeschrieben. Ich hab auch schon den Konstruktor von fstream ausprobiert, also der bei dem gleich eine Datei erstellt wird. Das funktionierte aber auch nicht. Ich hab auch shcon mein Kaspersky abgestellt, da ich mir dachte, dass das das Programm vllt. in der Funktion einschränkt. Wäre ja nicht das erste mal. Danach funktionerts aber immer noch nicht.
Danke schonmal im Voraus
p.s. Was mit der Datei gemacht wird ist nur beispielhaft.
-
Du hast keinen Modus zum Öffnen angegeben.
http://msdn.microsoft.com/en-us/library/aa243822(VS.60).aspx
-
wxString name, name_string, alter, groese, gewicht; name=WxEdit4->GetValue(); name_string=name+".txt"; alter=WxEdit1->GetValue(); groese=WxEdit2->GetValue(); gewicht=WxEdit3->GetValue(); std::fstream filestr; filestr.open(name_string, std::fstream::in); name_string<<"hallo"; filestr.close();jetz siehts so aus
ist aber das gleiche problem
-
martin.bens schrieb:
...
Du kannst einen Stream nicht für die Eingabe öffnen, und dann versuchen was auszugeben.

-
martin.bens schrieb:
...Mal ganz ehrlich. Findest du das lesbar? Du hast da noch ein oder zwei whitespaces übrig gelassen, die könntest du auch noch rausquetschen

Im Übrigen ist es seit ca. 20 Jahren nicht mehr nötig und auch nicht üblich, alle Variabeln am Anfang der Funktion zu deklarieren, wo man sie noch garnicht braucht bzw. nicht sinnvoll initialisieren kann. Ich biete dir mal zwei Alternativen an, such du dir aus welche dir besser gefällt:wxString name,name_string,alter,groese,gewicht; name=WxEdit4->GetValue();name_string=name+".txt"; alter=WxEdit1->GetValue();groese=WxEdit2->GetValue(); gewicht=WxEdit3->GetValue();std::fstream filestr; filestr.open(name_string,std::fstream::in); name_string<<"hallo";filestr.close();wxString name = WxEdit4->GetValue(); wxString name_string = name + ".txt"; wxString alter = WxEdit1->GetValue(); wxString groesse = WxEdit2->GetValue(); wxString gewicht = WxEdit3->GetValue(); std::fstream filestr(name_string, std::ios_base::in); name_string << "hallo"; filestr.close();Was dein eigentliches Problem angeht: Du gibst in dem Code NICHTS in die Datei aus. Ich wundere mich allerdings, dass die vorletzte Zeile compiliert. Muss eine komische String-Klasse sein, für die ein operator<< überladen wird. Ich vermute mal, dass du
filestr << "hallo"schreiben wolltest. Dazu muss wie schon angemerkt wurde allerdings der fstream mit ios_base::out geöffnet werden.Noch ein paar Anmerkungen:
- die Namen für die Eingabefelder sind nicht sehr sprechend. Wenn dich das Framework nicht grade dazu zwingt, sie so zu nennen würde ich sie umbenennen, z.B. aus WxEdit1 ein AlterInputField oder etwas in der Art. Das macht den Code lesbarer und verhindert gewisse Fehler (du wirst eine kleine Ewigkeit brauchen um rauszufinden, dass du WxEdit2 und WxEdit3 vertauscht hast, wenn das mal passieren sollte - und das passiert schnell!)
- die Variablen alter, groesse, gewicht sind hier nicht relevant, du hättest sie also nicht posten sollen (lenkt nur von deinem Problem ab). Im Code sollten sie dann sowieso weiter hinten stehen (nämlich da wo sie gebraucht werden).
-
vielen vielen Danke erstmla
es funktioniert jetz allesund danke für die Kritik am Programmierstil
ich programmier noch nicht so lange c++ und daher ist
mein Programmierstil ja immer noch formbar
deswegen bin ich für konstruktive Kritik immer offen
-
martin.bens schrieb:
ich programmier noch nicht so lange c++ und daher ist
mein Programmierstil ja immer noch formbarDas war der Sinn der Sache

Schön wenn sich mal jemand nicht gleich auf den Schlips getreten fühlt