relative Pfadangaben



  • Warum funktioniert der folgende Code nicht:

    #include <iostream>
    #include <fstream>
    using namespace std;
    
    int main()
    {
        fstream oFile("~/hallo");
        if(oFile.is_open())
        {
        oFile << "hallo" << endl;
        oFile.close();
        }
        else
        cout << "Datei konnte nicht geoeffnet werden" << endl;
      return 0;
    }
    

    Wie kann ich sonst eine Datei in mein Homeverzeichnis schreiben, bzw. wie krieg ich es raus?



  • uh, Fehler schon gefunden 🙂

    Trotzdem danke fürs reingucken 😉



  • Wirklich lustig Troll, für dich meld ich mich sogar an.
    Das Problem besteht weiterhin...



  • Ich weiß zwar ehrlich gesagt nicht ob das Overkill ist oder nicht, aber normalerweise enthält $HOME den Pfad des Home-Dirs, lies vielleicht mal "man getenv".

    edit:

    #include <cstdlib>
    #include <string>
    #include <iostream>
    
    int main(void)
    {
        std::string var;
    
        std::cout << "Umgebungsvariable: ";
        std::cin >> var;
    
        std::cout << "Wert: " << std::getenv(var.c_str()) << std::endl;
    }
    

    [ Dieser Beitrag wurde am 14.05.2003 um 16:18 Uhr von nman editiert. ]



  • das zeichen '~' wird von der shell interpretiert.
    sie ersetzt es durch den inhalt von $HOME.

    willst du das home dir des benutzers haben, dann:

    #include <unistd.h>
    #include <pwd.h>
    ...
    
    struct passwd* p = getpwuid( getuid() );
    printf( "homedir = %s\n", p->pw_dir );
    

    schau dir mal pwd.h an da kannst du noch ein paar
    andere sachen ueber den user herausfinden.



  • Danke, klappt ohne Probleme!


Anmelden zum Antworten