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

¿Fue útil?

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top