fFile.open (sFile.c_str());



  • Hallo,
    kann ich hier

    fFile.open (sFile.c_str());
    

    stat sFile.c_str() meine eigene funktion reinsreiben z.b

    fFile.open (myFunk());
    

    soll ich da was beachten z.b welsche rückgabewert (ich sag mal string oder char).
    danke.



  • Ja natürlich kannst du das und natürlich muss der Rückgabedatentyp zum Parameter von open() passen.



  • Nimm string als Rückgabewert. const char* wäre natürlich auch möglich, aber dabei gibt es zwei Fallen: Rückgabe eines lokalen Arrays endet in undefiniertem Verhalten und bei Rückgabe eines dynamisch angeforderten Speicherbereichs hast du ein Speicherleck, da du den Zeiger auf diesen nicht speicherst.
    Eine Alternative wäre natürlich auch noch vector<char>.
    Ohne statische/globale Variablen musst du dich also entscheiden, ob du entweder

    fFile.open (myFunk().c_str()); // string
    // oder
    fFile.open (&myFunk()[0]); // vector<char>
    

    schreiben möchtest und vor allen Dingen, wie der String in der Funktion am einfachsten zusammengesetzt werden kann.
    Also vermutlich string.


  • Mod

    In C++11 haben die fstream-Öffnungsfunktionen auch eine Überladung für strings.


Anmelden zum Antworten