Boost-Filesystem createdirectories auf Linux zu ersetzen „/“ mit „\“
-
21-09-2019 - |
Frage
Wenn Boost-Dateisystem unter Verwendung von Create (und createdirectories) Funktion in dem folgende Beispiel „/“ wird mit „\“.
ersetztboost::filesystem::path path ("/data/configSet");
boost::filesystem::create_directory(path);
Dieser Code snipped erzeugt ein Verzeichnis "data \ configSet" genannt, statt ein Unterverzeichnis von "configSet" inside "data" zu schaffen. Das gleiche Problem tritt mit createdirectories ();
Dieses Problem tritt nicht auf, wenn der Code auf einem Windows-System ausgeführt wird. Ich teste derzeit auf Linux Ubuntu 9.10
mitLösung
Es sieht aus wie aus irgendeinem Grund boost :: filesystem denkt, dass Sie unter Windows sind, nicht Linux, und damit Windows-Stil Pfadnamen (durch \ getrennt) verwendet. Können Sie ein bisschen mehr Informationen veröffentlichen, wie Sie Boost-bauen und wie sind Sie auf die Überschriften, einschließlich? Sind Sie vielleicht eine Windows-Version von Boost-auf Linux bauen?
Bearbeiten : Ich habe versucht, mich auf in einer Konfiguration, so nah bei Ihnen wie möglich einstellen. Ubuntu 9.10, libboost1.40-all-dev installiert. Wenn ich das folgende Programm kompilieren und ausführen, funktioniert es wie erwartet, ein Verzeichnis namens configSet
in /data
zu schaffen.
#include <boost/filesystem.hpp>
int main() {
boost::filesystem::path p("/data/configSet");
boost::filesystem::create_directory(p);
return 0;
}
Können Sie versuchen, die Zusammenstellung und das Programm ausgeführt wird, mit den folgenden Befehlen, und sehen, ob es unterschiedliche Ergebnisse gibt?
$ g++ -o boost-filesystem -lboost_filesystem boost-filesystem.cpp
$ ./boost-filesystem