Boost Filesystem createdirectory в Linux, заменив «/» на «\»
-
21-09-2019 - |
Вопрос
При использовании функции 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