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])))