Frage

Wenn Boost-Dateisystem unter Verwendung von Create (und createdirectories) Funktion in dem folgende Beispiel „/“ wird mit „\“.

ersetzt
boost::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

mit
War es hilfreich?

Lö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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top