boost.Filesystem: canonical



  • Hi, wie kann ich aus einem Pfad alle .. und . entfernen/auflösen? boost::filesystem::canonical gibt es bei mir irgendwie nicht:

    #include <boost/filesystem.hpp>
    #include <iostream>
    
    int main(int argc, char** argv) {
            std::cout<<boost::filesystem3::canonical(argv[1])<<std::endl;
            return 0;
    }
    

    Ausgabe des Compilers:

    ./test_boost.cpp: In function `int main(int, char**)':
    ./test_boost.cpp:5:13: error: `canonical' is not a member of `boost::filesystem3'
    

    Compiler version: g++ (GCC) 4.6.2
    Boost version: 1.47

    Ist das bei euch auch so? Laut Dokumentation sollte es eine canonical funktion geben.



  • Entferne mal die 3 nach filesystem. Ich meine das gibt es auch im normalen filesystem.



  • geht auch nicht, habe ich schon probiert.



  • Falls du Linux benutzt: Eingige distributionen vertreiben alte boost-versionen z.B. Debian.



  • Lass doch mal cscope über deine Boost Header laufen und suche mit dem wo canonical definiert/deklariert wird.



  • Die Boost version ist aktuell, 1.47 (Naja, aktueller wäre 1.48, ist aber glaube ich kein so großer Unterschied). Ich benutze ArchLinux.
    Ich habe mal nach "canonical" in include/filesystem gesucht, nichts gefunden.
    Kann es sein das die Funktion entfernt wurde? Wie bekomme ich das Ergebnis von canonical sonst?


Anmelden zum Antworten