C++: Boost: как проверить наличие папки внутри другой папки в моем рабочем каталоге?

Код:

boost::filesystem::path config_folder(Config::CONFIG_FOLDER_NAME);

if( !(boost::filesystem::exists(config_folder)))
{
    std::cout << "Network Config Directory not found...\n";
    std::cout << "Creating folder called " << Config::CONFIG_FOLDER_NAME << "\n";
    boost::filesystem::create_directory(config_folder);
}

if( !(boost::filesystem::exists(boost::format("%s/%s") % config_folder % Config::fmap[Config::current_hash_function]));
{
    std::cout << "This hash has not been configure before...\n";
    std::cout << "Creating folder called " << Config::fmap[Config::current_hash_function] << "\n";
    boost::filesystem::create_directory(boost::format("%s/%s") % config_folder % Config::fmap[Config::current_hash_function]);
}

Итак, во-первых, если папка config не существует, создайте ее. (эта часть работает) Далее, проверьте, существует ли папка current_hash_function, если нет.. создайте ее. (эта часть не работает)

Я получаю ошибку;

src/neural_networks/shared.cpp:41: error: no matching function for call to ‘exists(boost::basic_format<char, std::char_traits<char>, std::allocator<char> >&)’

причина, по которой я сделал формат boost в проверке fs:exist, заключается в том, что я не знаю, как создать путь глубиной 2 уровня

2 ответа

Решение

/ оператор перегружен для объединения path объекты. Нет необходимости в явном форматировании строки и не нужно беспокоиться о символе разделителя пути, специфичном для платформы.

if(!(boost::filesystem::exists(config_folder / Config::fmap[Config::current_hash_function]));

Любой операнд может быть std::string до тех пор, пока другой path,

boost::filesystem::exists() нужен аргумент типа boost::filesystem::path или что-то неявно-конвертируемое к нему, такое как std::string, но то, что вы проходите, не из тех.

должно работать следующее:

if( !( boost::filesystem::exists( str(
               boost::format("%s/%s")
               % config_folder % Config::fmap[Config::current_hash_function])))
Другие вопросы по тегам