Pfad korrigieren mit boost::filesystem V3



  • namespace fs = boost::filesystem;
    std::string GetDataPath(HINSTANCE hInstance)
    {
        char dir[MAX_PATH];
        GetModuleFileNameA(hInstance, dir, MAX_PATH);
    
        fs::path p(dir);
        p = ( p.parent_path() / "../data" );
        p.make_preferred();
        return p.string();
    }
    

    Ich hole mir den ganzen Pfad zu der Anwendung die gerade ausgeführt wird mit GetModuleFileName. Danach schneide ich den Dateinamen ab und hänge "../data" an.

    Ich dachte make_preferred würde jetzt das ".." entfernen und den Pfad entsprechend in "D:\Source\SpaceGame\bin\data" korrigieren, es bleibt aber bei "D:\Source\SpaceGame\bin\Debug\..\data".
    Gibts hier noch was in boost oder komm ich um GetFullPathName() nicht herum?
    Habe die Doku durchgeschaut, aber nichts gefunden was mir da jetzt weiterhelfen würde leider...
    Bitte beachten: Ich nutze V3 mit BOOST_FILESYSTEM_NO_DEPRECATED Parameter.

    edit:

    std::string GetDataPath(HINSTANCE hInstance)
    {
        char dir[MAX_PATH];
        GetModuleFileNameA(hInstance, dir, MAX_PATH);
    
        fs::path p(dir);
        p = ( p.parent_path().parent_path() / "data" );
        p.make_preferred();
        return p.string();
    }
    

    Das funktioniert soweit, aber ob das gut is?


Anmelden zum Antworten