Dateiendung bestimmen
-
Wie kann ich die Datei denn jetzt nochmal öffnen um einen Text daran anzuhängen?
std::ofstream Ausgabe(Dateinname,ios::app);
klappt nicht, weil der Bezeichner nicht vergeben ist. Ich muß also die Endung txt dran hängen. Wie kriege ich das hin? Bei
std::ofstream Ausgabe(Dateinname.txt,ios::app);
gibt es auch immer einer Fehlermeldung.
-
Tag,
std::ofstream Ausgabe((Dateiname+".txt").c_str(), ios_base::app);
mfg
v R
-
Gast221212 schrieb:
EnERgYzEr schrieb:
std::string Dateiname; cout << "Bitte geben Sie einen Dateinamen ein."; cin >> Dateiname; std::ofstream Ausgabe(Dateiname+".txt");
So gehen dann also Stringstreams...
quatsch...
#include <sstream> //für stringstreams #include <iostream> using namespace std; int main(void) { string name; name = "datei"; ostringstream test; test << name << ".txt"; cout << test.str(); }
ausgabe:
datei.txt
dasselbe geht natürlich auch fürs "einlesen" aus einem string.
dabei gilt:
[ C ] [ C++ ] sprintf() ostringstream sscanf() istringstream --- (kombiniert) stringstream
die operatoren & die funktionsweise von stringstreams sind ähnlich wie filestreams oder iostreams.
-
So wird jetzt jedesmal eine neue Datei erstellt, ich möchte den Text aber an die erste hängen
-
wenn ich dich korrekt verstanden habe:
ofstream out("datei.txt",ios::ate);
-
dragonball-l schrieb:
So wird jetzt jedesmal eine neue Datei erstellt, ich möchte den Text aber an die erste hängen
Hast du meinen Code eigentlich mal ausprobiert? Das app steht fuer append.
mfg
v R
-
ja was denn nun? ios::ate oder ios::app? oder bewirken die dasselbe?
-
Lars Hupel schrieb:
ja was denn nun? ios::ate oder ios::app? oder bewirken die dasselbe?
Ja, dich meinte ich auch gar nicht. Du stands nur zufaellig zwischen meinem
Post und dem letzten des OPmfg
v R
-
aha
aber kannst du mir trotzdem auf meine frage antworten?
-
Lars Hupel schrieb:
aha
aber kannst du mir trotzdem auf meine frage antworten?
Die Datei wird trotzdem neugeschrieben. Man spart sich allerdings einen seekp-
Aufruf.mfg
v R
-
[quote="virtuell Realisticer"]
dragonball-l schrieb:
So wird jetzt jedesmal eine neue Datei erstellt, ich möchte den Text aber an die erste hängen
Hast du meinen Code eigentlich mal ausprobiert? Das app steht fuer append.
ja, habe ich.
also ich erstelle erst meine ausgabe datei und schreibe dann in diese.wenn ich jetzt probiere auf diese datei mit deinem Quelltext zuzugreifen wird eine neue Datei erstellt, also es wird nix an die alte gehängt.
-
Zeig mal deinen Quelltext bitte.
mfg
v R
-
mach ich morgen, hab den text auf´m rechner der nicht im netzwerk ist...besorge mir morgen einen stick!
-
guten morgen,
das öffen erfolgt fast am ende...sebastian
#include<iostream>
#include<fstream>
#include<string>using namespace std;
int main()
{// Die Datei wl_zanare.txt wird geöffnet
std::ifstream Eingabedatei_zanare("wl_zanare_ausgabe.txt");
// Wenn die Datei erfolgreich geöffnet wurde
if (Eingabedatei_zanare)
{
cout << "Die Datei (wl_zanare_ausgabe.txt) wurde erfolgreich gelesen.\n";
}
// Wenn die Datei wl_zanare.txt nicht geöffnet werden, wird eine Fehler Meldung ausgegeben
if (!Eingabedatei_zanare)
{
cout << "Die Datei (wl_zanare_3,4x51.txt) kann nicht geoeffnet werden.\n";
cout << "Bitte ueberpruefen Sie ob sich die Datei im Verzeichnis befindet\n\n";
}// Wenn die Eingabedateizanare erfolgreich gelesen
// wurde, wird die Ausgabedatei erzeugt!
// Sie wird vom Benuzter benannt und endet
// automatisch mit der Endung .txtif(Eingabedatei_zanare)
{// Um die Ausgabedatei vom Programm aus zu bestimmen
// alt: Um bei Programmtests nicht jedesmal eine neue
// Ausgabedatei eingeben zu müssen nehmen Sie einfach
// das /* vor ***std::ofstream Ausgabe_fuer_beide_Programme("Ausgabetest.txt");***
// weg und setzen dafür vor ***std::string Dateiname;***
// ein /* und nach std::ofstream Ausgabe_fuer_beide_Pro
// gramme((Dateiname_Ausgabe+".txt").c_str());
// wieder ein */ zum beenden des Kommentar// std::ofstream Ausgabe_fuer_beide_Programme("Ausgabetest.txt");
// neu
// Um die Ausgabedatei vom Benutzer aus zu bestimmen mit der Endung .txtstd::string Dateiname_Ausgabe;
cout << "Bitte geben Sie einen Namen fuer Ihre Ausgabedatei ein:\t";
cin >> Dateiname_Ausgabe;std::ofstream Ausgabe_fuer_beide_Programme((Dateiname_Ausgabe+".txt").c_str());
// Ausgabedatei erfolgreich erstellt
if(Ausgabe_fuer_beide_Programme)
{
cout << "Ausgabedatei erfolgreich erstellt.\n";
}
if(!Ausgabe_fuer_beide_Programme)
{
cout << "Ausgabedatei konnte nicht erstellt werden";
}// Jetzt werden die Zeilen für die Ausgabedatei definiert
// Zuerst muß die Funktion "Ausgabe_fuer_beide_Programme"
// aufgerufen werden. Dann der Inhalt der in der Ausgabe-
// datei stehen soll.// Inhalt der Datei Eingabedatei_zanare
char ch;
while (Eingabedatei_zanare.get(ch))
Ausgabe_fuer_beide_Programme << ch;// Schließen der Eingabedatei von Zanare
Eingabedatei_zanare.close();
}cout << " Die Dateiausgabe fuer beide Programme wird im Anhängemodus geöffnet";
std::string Dateiname_Ausgabe;
std::ofstream Ausgabe_fuer_beide_Programme((Dateiname_Ausgabe+".txt").c_str(),ios::ate);
if (!Ausgabe_fuer_beide_Programme)
{
cout << "Es ist nicht möglich die Ausgabedatei für beide Programme zu öffnen";}
getchar();
return 0;}
-
Nabend,
sry, hab erst jetzt wieder ins INET geschaut ;).
Mach aus dem ios::ate ein ios::app.
mfg
v R
-
kein ding, ist ja wochenende,....was ist das nochmal
ich habe aber immer noch das Problem das eine zweite .txt Datei erstellt wird.