Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (GNU/Linux, *NIX, *BSD und Co) » fstream und Dateipfade

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
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
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.09.2007, 18:49 Uhr
~mustino
Gast


Fehler gefunden! Im Konstruktor wird nur der Zeiger umgelenkt und nicht der Inhalt kopiert.

Gruß,

mustino
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (GNU/Linux, *NIX, *BSD und Co) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: