kiep schmeiling
Cadet 4th Year
- Registriert
- Jan. 2009
- Beiträge
- 64
Hi,
ich hab ein kleines Problem beim schreiben in eine Datei:
und zwar will ich einen Text am Anfang der Datei, also vor dem Ursprungstext, einfügen.
Soweit ich weiß erledigt man das am besten über die Öffnunsmethode mit ios::xxx.
Soweit so gut, alle Öffnungsmethoden mal durchprobiert, aber bei alle löscht er den Inhalt der Datei beim Öffnen (außer bei ios::app, aber das setzt den Positionszeiger vor jedem Schreibvorgang neu ans Ende der Datei. Kann man das irgendwie unterbinden?).
Also habe ich mich mal im Internet umgeschaut und habe gelesen, dass man mehre methoden verknüpfen muss, damit auch ohne ios::app der Inhalt beim Öffnen nicht gelöscht wird (mit ios::in | ios:ut | ios::ate soll das funktionieren, da leer er die Datei aber trotzdem), also hab ich alle erdenklichen Möglichkeiten ausprobiert, aber immer leert er die Datei beim Öffnen (esseidenn ich verwende NUR ios::in, dann kann ich aber nicht schreiben, oder eben ios::app, dann kann ich nur ans Ende schreiben.
Wie kann ich nun eine Datei zum schreiben öffnen, und dabei an beliebige Stellen schreiben?
Es ist mir auch egal wo der Positionszeiger am Anfang steht, den kann ich ja manuell versetzen, er darf sich nur nicht immer wieder automatisch zurücksetzen.
Edit: Ah, kann ich das Codefenster irgendwie verkleinern, sonst muss man ja zum Lesen immer seitlich scrollen?
Und sorry für den Smily, der ersetz mein <doppelpunkt>o immer durch den Smily, ich weiß nicht wie das weggeht...
Hier nach der Code der ist, falls das relevant ist, geschrieben und compiliert mit Dev-C++.
ich hab ein kleines Problem beim schreiben in eine Datei:
und zwar will ich einen Text am Anfang der Datei, also vor dem Ursprungstext, einfügen.
Soweit ich weiß erledigt man das am besten über die Öffnunsmethode mit ios::xxx.
Soweit so gut, alle Öffnungsmethoden mal durchprobiert, aber bei alle löscht er den Inhalt der Datei beim Öffnen (außer bei ios::app, aber das setzt den Positionszeiger vor jedem Schreibvorgang neu ans Ende der Datei. Kann man das irgendwie unterbinden?).
Also habe ich mich mal im Internet umgeschaut und habe gelesen, dass man mehre methoden verknüpfen muss, damit auch ohne ios::app der Inhalt beim Öffnen nicht gelöscht wird (mit ios::in | ios:ut | ios::ate soll das funktionieren, da leer er die Datei aber trotzdem), also hab ich alle erdenklichen Möglichkeiten ausprobiert, aber immer leert er die Datei beim Öffnen (esseidenn ich verwende NUR ios::in, dann kann ich aber nicht schreiben, oder eben ios::app, dann kann ich nur ans Ende schreiben.
Wie kann ich nun eine Datei zum schreiben öffnen, und dabei an beliebige Stellen schreiben?
Es ist mir auch egal wo der Positionszeiger am Anfang steht, den kann ich ja manuell versetzen, er darf sich nur nicht immer wieder automatisch zurücksetzen.
Edit: Ah, kann ich das Codefenster irgendwie verkleinern, sonst muss man ja zum Lesen immer seitlich scrollen?
Und sorry für den Smily, der ersetz mein <doppelpunkt>o immer durch den Smily, ich weiß nicht wie das weggeht...
Hier nach der Code der ist, falls das relevant ist, geschrieben und compiliert mit Dev-C++.
Code:
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <strings.h>
#include <fstream>
using namespace std;
int main(int nNumberofArgs, char* pszArgs[])
{
string buf;
char line[2000];
string sline;
char filename[500];
if(nNumberofArgs<=1){cout<<"In welche Datei soll geschrieben werden?\n";cin.getline(filename, 500);pszArgs[1]=filename;}
cout<<"Oeffne Datei <"<<pszArgs[1]<<">...\n\n\n"<<endl;
ofstream file(pszArgs[1], /*was muss hier hin?*/); //ich kann statt ofstream auch nur fstream verwenden oder?
if (!file.good()){cerr<<"\nKonnte Datei <"<<pszArgs[1]<<"> nicht oeffnen!"<<endl;goto ende;}//fehler ausgeben wenn datei nicht geöffnet werden konnte
file.seekg( 0, ios_base::beg ); //positionszeiger an den Anfang der Datei setzen
cout<<"gib jetzt den Text ein, der in der Datei gespeichert werden soll. (xx zum beenden)\n\n\n"<<endl;
for (;;)
{
cin.getline(line, 2000);
sline = line;
if (sline == "xx"){file.close(); break;} //das nur weil ich kein const char mit char array vergleichen kann
file << line <<endl;
if (!file.good()){cerr<<"\nFehler beim Schreiben in die Datei <"<<pszArgs[1]<<">"<<endl;goto ende;} //ja ich weiß ich könnte auch break benutzen...
}
cout<<"\nerfolgreich beendet\n";
ende:;
system("PAUSE");
return 0;
}
Zuletzt bearbeitet: