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: exists check, заключается в том, что я не могу создать путь 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])))