Boost createdirectories filesystem su Linux sostituendo “/” con “\”
-
21-09-2019 - |
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
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