ofstream in %windir%



  • hallo,
    ich möchte mit
    string windir = getenv("windir");
    ofstream test;
    test.open( windir.c_str + "/test.jpg",ios::out |ios::binary);

    eine datei in das %windir% packen nur leider macht der das nicht
    was mache ich falsch?



  • Hi,
    -> windir.c_str() + "/test.jpg" Kann nicht gut funktionieren, da du hier nur zwei Adressen addierst. c_str() gibt ein const char* zurück und du addierst dann zwei const char*. operator+ kannst du mit std::string wie gewünscht benutzen:

    string windir = getenv("windir");
    windir += "/test.jpg";
    
    ofstream test;
    test.open( windir.c_str,ios::out |ios::binary);
    


  • #include <cstdlib>
    #include <fstream>
    #include <string>
    
    int main()
    {
        const std::string var_windir(std::getenv("windir"));
        std::ofstream file_stream((var_windir + "/test.jpg").c_str(), std::ios_base::binary);
    
        return file_stream;
    }
    

    ...



  • Den Rückgabewert von getenv einem std::string ohne weiteres zuzuweisen ist unschön. Du solltest auf jeden Fall prüfen, ob getenv etwas ungleich 0 liefert, bevor zu das dem std::string zuweist.



  • danke hat mir sehr weiter geholfen


Anmelden zum Antworten