Impulsar createdirectories sistema de ficheros en Linux reemplazando “/” con “\”
-
21-09-2019 - |
Pregunta
Cuando se utiliza estimular la función CreateDirectory de sistema de archivos (y createdirectories) en el siguiente ejemplo, "/" está siendo reemplazado con "\".
boost::filesystem::path path ("/data/configSet");
boost::filesystem::create_directory(path);
Este código snipped produce un directorio llamado "data \ configSet", en lugar de crear un subdirectorio de "configSet" dentro de "datos". El mismo problema se produce usando createdirectories ();
Este problema no se produce cuando el código se ejecuta en un sistema Windows. Actualmente estoy probando en Linux usando Ubuntu 9.10
Solución
Parece que por alguna razón impulso :: sistema de archivos piensa que está en Windows, Linux no, y por lo tanto está utilizando un recorrido de estilo de Windows (separadas por \). Se puede publicar un poco más de información acerca de cómo se está construyendo Boost y cómo se está incluyendo las cabeceras? ¿Está quizá a crear una versión de Windows de Boost en Linux?
editar : He intentado fijar a mí mismo en una configuración lo más cercano a la suya como sea posible. Ubuntu 9.10, libboost1.40-all-dev instalado. Cuando compilar y ejecutar el siguiente programa, que funciona como se espera, la creación de un directorio llamado configSet
en /data
.
#include <boost/filesystem.hpp>
int main() {
boost::filesystem::path p("/data/configSet");
boost::filesystem::create_directory(p);
return 0;
}
Se puede tratar de compilar y ejecutar ese programa, con los siguientes comandos, y ver si se le da resultados diferentes?
$ g++ -o boost-filesystem -lboost_filesystem boost-filesystem.cpp
$ ./boost-filesystem