Возвращает вектор <string>внутри функции или recursive_directory_iterator. Необработанное исключение - PullRequest
0 голосов
/ 22 апреля 2020
vector<string> ReturDir(const string& s)
{
    vector<string> r;
    for (auto &p : fs::recursive_directory_iterator(s))
    {
        if (p.is_directory()) r.push_back(p.path().string());
    }
    return r;
}

Неудачно, почему? Я попробовал все, очевидно, я не изучил истинную силу C ++. Когда я делаю это в обычном main (), это для l oop работает, но внутри функции не работает при вызове из main ().

Необработанное исключение в 0x76824192 в ... std :: filesystem :: filesystem_error в ячейке памяти

Это то, что я думал. Как это исправить, проблема в векторе, а не в recursive_directory_iterator?

1 Ответ

0 голосов
/ 22 апреля 2020

Что говорит исключение? Существует множество причин, по которым итерация каталога может завершиться неудачей - наиболее распространенным является отсутствие разрешений.

Когда я запускаю это на своем Ma c, итерируя по моему домашнему каталогу, я получаю исключение с сообщением :

ошибка: в recursive_directory_iterator :: operator ++ (): попытка рекурсии в "./Pictures/Photos Library.photoslibrary": операция недопустима

(перехватить исключение ; вывести строку из вызова what())

...