Pergunta

Ao usar a função Createdirectory (e CreateRectories) da Boost FileSystem no exemplo a seguir, "/" está sendo substituído por "".

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

Esse código selecionado produz um diretório chamado "Data ConfigSet", em vez de criar um subdiretório de "ConfigSet" dentro de "dados". O mesmo problema ocorre usando o CreateRectories ();

Este problema não ocorre quando o código é executado em um sistema Windows. Atualmente, estou testando no Linux usando o Ubuntu 9.10

Foi útil?

Solução

Parece que, por algum motivo, Boost :: FileSystem pensa que você está no Windows, não no Linux e, assim, está usando nomes de caminho do estilo do Windows (separados por ). Você pode postar um pouco mais de informações sobre como está construindo Boost e como está incluindo os cabeçalhos? Você talvez esteja construindo uma versão do Windows do Boost no Linux?

editar: Eu tentei me preparar em uma configuração o mais próximo possível do seu. Ubuntu 9.10, libboost1.40-tudo instalado. Quando eu compilar e executar o seguinte programa, ele funciona como esperado, criando um diretório nomeado configSet dentro /data.

#include <boost/filesystem.hpp>

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

  return 0;
}

Você pode tentar compilar e executar esse programa, com os seguintes comandos e ver se ele fornece resultados diferentes?

$ g++ -o boost-filesystem -lboost_filesystem boost-filesystem.cpp
$ ./boost-filesystem
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top