Повысьте каталоги, созданные в файловой системе Linux, заменив "/" на "\" - PullRequest
0 голосов
/ 25 декабря 2009

При использовании функции созданной директории (и созданных каталогов) Boost Filesystem в следующем примере символ «/» заменяется на «\».

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

Этот фрагмент кода создает каталог с именем «data \ configSet» вместо создания подкаталога «configSet» внутри «data». Та же проблема возникает при использовании createirectories ();

Эта проблема не возникает, когда код выполняется в системе Windows. В настоящее время я тестирую на Linux с использованием Ubuntu 9.10

1 Ответ

3 голосов
/ 25 декабря 2009

По какой-то причине boost :: filesystem думает, что вы работаете в Windows, а не в Linux, и поэтому использует имена путей в стиле Windows (разделенные \).Можете ли вы опубликовать немного больше информации о том, как вы строите Boost и как вы включаете заголовки?Возможно, вы создаете версию Boost для Windows для Linux?

edit : я попытался настроить себя в конфигурации, максимально приближенной к вашей.Ubuntu 9.10, libboost1.40-all-dev установлен.Когда я компилирую и запускаю следующую программу, она работает как положено, создавая каталог с именем configSet в /data.

#include <boost/filesystem.hpp>

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

  return 0;
}

Можете ли вы попробовать скомпилировать и запустить эту программу с помощью следующих команд, ипосмотреть, если это даст вам разные результаты?

$ g++ -o boost-filesystem -lboost_filesystem boost-filesystem.cpp
$ ./boost-filesystem
...