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?