000
26.09.2007, 18:12 Uhr
~mustino
Gast
|
Hallo zusammen,
ich habe das Problem, dass wenn ich mit fstream Arbeite zwar Dateinamen problemlos eingeben kann, aber bei Dateipfaden Probleme bekomme.
Vorerst das System: Betriebssystem: Linux Compiler: g++
Also ich habe eine Klasse ExampleDocument
Code: |
class ExampleDocument { private: char* path; string inputfile; string outputfile; public: ExampleDocument(); ExampleDocument(bool newdocument, bool typeInput); ExampleDocument(string path, bool newdocument, bool typeInput); virtual ~ExampleDocument(); int WriteDocument(string textvalue); };
|
Die Methode "WriteDocument" funktioniert nicht mit Dateipfaden, nur bei angabe des Dateinamens selbst.
Die Methode WriteDocument:
Code: |
int ExampleDocument::WriteDocument(string textvalue){ fstream f; cout << "Pfad1: " << this->path << endl; f.open(this->path, ios::app|ios::out); f << textvalue << endl; f.close(); cout << "Pfad2: " << this->path << endl; return 0; }
|
Der Verwendete Konstruktor:
Code: |
ExampleDocument::ExampleDocument(string tmp_path, bool newdocument, bool typeInput) { this->inputfile="inputFile.dat"; this->outputfile="outputFile.dat"; string file; string tmp_string; if(typeInput){ file = this->inputfile; }else{ file = this->outputfile; }
tmp_string = tmp_path+file; this->path = const_cast<char*>(tmp_string.c_str()); if(newdocument){ fstream fs(this->path, ios::out); fs.close(); } }
|
Die "path" Variable wird direkt nach dem Schreiben in die Datei verändert. Die Ausgabe lautet:
Code: |
Pfad1: /home/einVerzeichnis/outputfile.dat (korrekt) Pfad2: /home/einVerzeichnis/outputfile.dat0 (falsch)
|
Wieso wird aus /home/..../outputfile.dat .../outputfile.dat0 ??? Wieso wird die Variable nach dem fstream bei Angabe eines Pfades geändert, jedoch bei der Angabe der einzelnen Dateibezeichnung nicht???
Vielen Dank!
Gruß,
mustino |