Arbeiten mit dem std::filesystem() unter Linux und Windows.



  • Ich hab ein Problem. Ich nutze am liebsten Linux, muss aber eine Schnittstelle programmieren, welche auf Grund meiner Börsensoftware im Hintergrund unter Windows läuft. Jetzt habe ich im Kurs gelernt, ich kann den aktuellen Verzeichnispfad seit c++ 17 über: std::filesystem::path(input_path)... bekommen. Unter linux gehts wunderbar, in windows mit dem g++ compiler erhalte ich jedoch einen fehlerhaften Pfad wie folgt: /c/cygwin/source/anwender/Downloads/cpp/komplettkurs_template/05_String/Zusatzaufgaben/test/main2.cc. anstatt: /home/anwender/Downloads/cpp/komplettkurs_template/05_String/Zusatzaufgaben/test/main2.cc. Bedeutet, der Anfang des Pfades ist Murks (durch dieses cygwin, was da eingefügt wird). Nun wurde mir gesagt, damit die Funktion ordnungsgemäß funktioniert, muss ich unter windows über den msvc-compiler kompilieren. Ich arbeite unter vs-code und bin bisher zufrieden. Das heißt nun, Microsoft - Visualstudio zu insallieren, um besagten Compiler zu erhalten und diesen dann im VS-Code importieren. Weiß jemand, ob es eine andere Möglichkeit gibt? Wie macht Ihr sowas, wenn Ihr unter Windoof den aktuellen Pfad haben wollt? Über Anregungen würde ich mich freuen, Gruß Ingolf



  • @Ingolf_008 Der Path den du erwartest sieht mir nach einer Linux Pfadangabe aus. Sicher, dass du dafür Windows nutzt? Oder ist das Wine? Da habe ich solche Pfade mit /c/ auch schon mal gesehen.

    Edit: Ah. cygwin arbeitet wohl mir dieser Art von Präfix und Posix Style. Es gibt aber wohl Cygpath um die Pfad Stile zu konvertieren.



  • Ja stimmt, hab gerade nur meinen Linux-Laptop bei mir, als ich die Nachricht poastete. Der Pfad unter Windows natürlich Windows-Like. Ging mir drum zu zeigen, das dieses blöde cygwin an den Anfang gesetzt wurde. Danke für den Verweis auf Cygpath. Das schau ich mir gleich mal an.



  • @Ingolf_008 sagte in Arbeiten mit dem std::filesystem() unter Linux und Windows.:

    Jetzt habe ich im Kurs gelernt, ich kann den aktuellen Verzeichnispfad seit c++ 17 über: std::filesystem::path(input_path)... bekommen.

    Den aktuellen Pfad bekommst du über std::filesystem::current_path. Mit std::filesystem::path(input_path) bekommst du das was input_path representiert - das kann ein relativer oder absoluter Pfad sein.

    Wie macht Ihr sowas, wenn Ihr unter Windoof den aktuellen Pfad haben wollt? Über Anregungen würde ich mich freuen, Gruß Ingolf

    Je nach Anwendungsfall std::filesystem::current_path oder GetCurrentDirectoryW, selten GetCurrentDirectoryA.


Log in to reply