Рейтинг:
2
Jochen Arndt
Он был объединен в стандарт C++17: std::файловая система::directory_iterator - cppreference.com[^].
Если вы все еще хотите использовать реализацию Boost (а не компиляцию с поддержкой C++17), вы должны использовать более старую версию Boost или проверить, существует ли она по-прежнему, но требует включения определения.
PrafullaVedante
Спасибо за комментарий. У меня есть такой код, как следующий.
boost::файловая система::wdirectory_iterator dirEndIter;
для(тип Boost::файловая система::wdirectory_iterator ИТЭР(logParentDirectory); итер != dirEndIter; ++ИТЭР)
{
if(!boost::filesystem::is_regular_file(iter->status()))
{
продолжить;
}
std::tstring filePath = iter->string();
//Я использую этот "путь к файлу" для некоторой дальнейшей обработки
.
.
.
.
.
}
Как преобразовать его в соответствии с более новой реализацией boost.
Я пытаюсь следовать за вами. Правильно ли это ?
boost::файловая система::directory_iterator dirEndIter;
для(тип Boost::файловая система::объект класса directory_iterator ИТЭР(logParentDirectory); итер != dirEndIter; ++ИТЭР)
{
if(!boost::filesystem::is_regular_file(iter->status()))
{
продолжить;
}
std::tstring filePath = iter->path().generic_wstring();
//Я использую этот "путь к файлу" для некоторой дальнейшей обработки
.
.
.
.
.
}
PrafullaVedante
Основываясь на ваших комментариях, я внес два изменения в код.
1)изменен wdirectory_iterator на directory_iterator
2)Чтобы получить широкий путь к файлу char из итератора
Я использую
ИТЭР-&ГТ;путь().generic_wstring();
вместо
std::tstring filePath = iter->string();
Дайте мне знать, если я прав.
Jochen Arndt
Я не могу ответить на этот вопрос, не зная, какую реализацию STL вы используете (то есть какой компилятор, какая версия и какой вариант версии C++ используется). И даже тогда я не смогу это проверить, если у меня не будет этого компилятора.
Я предполагаю, что Windows, потому что другие системы часто используют std::string с кодировкой UTF-8. Тогда смотри https://docs.microsoft.com/en-us/cpp/standard-library/directory-iterator-class и еще https://docs.microsoft.com/en-us/cpp/standard-library/file-system-navigation.
PrafullaVedante
Я использую Visual Studio 2017.
Jochen Arndt
Directory_iterator ожидает аргументы класса path. Если вам нужно преобразование, вы можете явно создать аргумент path, как показано в примерах двух ссылок из моего предыдущего комментария.
В Windows пути (и класс path) всегда являются UTF-16 (wstring).