Domanda

Quando si utilizza la funzione Boost CreateDirectory del Filesystem (e createdirectories) nel seguente esempio, "/" viene sostituito con "\".

boost::filesystem::path path ("/data/configSet");
boost::filesystem::create_directory(path);

Questo codice snipped produce una directory chiamata "dati \ configSet", invece di creare una sottodirectory di "configSet" dentro "i dati". Lo stesso problema si verifica utilizzando createdirectories ();

Questo problema non si verifica quando il codice viene eseguito su un sistema Windows. Attualmente sto testando su Linux usando Ubuntu 9.10

È stato utile?

Soluzione

Sembra che per qualche motivo boost :: filesystem pensa che siete su Windows, Linux non è, e quindi sta usando nomi di percorso di stile di Windows (separati da \). Puoi pubblicare un po 'più informazioni su come si sta costruendo Boost e come si sta comprese le intestazioni? Stai forse creare una versione per Windows di Boost su Linux?

modifica : Ho provato ad installare me stesso in una configurazione il più vicino al tuo possibile. Ubuntu 9.10, libboost1.40-all-dev installato. Quando compilo ed eseguire il seguente programma, esso funziona come previsto, la creazione di una directory chiamata configSet in /data.

#include <boost/filesystem.hpp>

int main() {
  boost::filesystem::path p("/data/configSet");
  boost::filesystem::create_directory(p);

  return 0;
}

Si può provare a compilare ed eseguire quel programma, con i seguenti comandi, e vedere se ti dà risultati diversi?

$ g++ -o boost-filesystem -lboost_filesystem boost-filesystem.cpp
$ ./boost-filesystem
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top