Вопрос

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

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

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

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

Это было полезно?

Решение

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

редактировать:Я постарался настроить себя в конфигурации, максимально приближенной к вашей.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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top