2 / 2 / 0
Регистрация: 05.12.2018
Сообщений: 69
1

filysystem

18.05.2022, 01:04. Показов 569. Ответов 6
Метки нет (Все метки)

Приветствую друзья, помогите пожалуйста, какая запись вместо auto - должна подставляться? плохо работаю с filesystem....
C++
1
2
3
4
5
for (auto& file : fs::directory_iterator(current_path)) //пример вывода
    {
        paths.push_back(file.path().string());
        cout << file.path() << endl;
    }
Нашёл на просторах интернета где-то эту запись - выводит все папки/файлы в папке или в томе.
P.S Пролагало создам две темы случайно XD
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Эксперт С++
8720 / 4263 / 950
Регистрация: 15.11.2014
Сообщений: 9,670
18.05.2022, 01:24 2
Цитата Сообщение от Xpystum Посмотреть сообщение
какая запись вместо auto - должна подставляться?
directory_entry
0
2 / 2 / 0
Регистрация: 05.12.2018
Сообщений: 69
18.05.2022, 01:33  [ТС] 3
C++
1
(directory_entry& file : fs::directory_iterator(current_path))
То-есть запись должна быть формально такая?
0
С чаем беда...
Эксперт CЭксперт С++
10008 / 5354 / 1467
Регистрация: 18.10.2014
Сообщений: 12,901
18.05.2022, 02:44 4
Цитата Сообщение от Xpystum Посмотреть сообщение
То-есть запись должна быть формально такая?
Почему? Вы не в состоянии самостоятельно додуматься, что должно быть fs::directory_entry, а не directory_entry?

Только зачем она "должна быть формально такая", если есть auto? Вопрос только в том, почему в исходном варианте не const auto &.
0
2 / 2 / 0
Регистрация: 05.12.2018
Сообщений: 69
18.05.2022, 03:17  [ТС] 5
Уже додумался, не написал с fs::directory_entry, потому что выдавало ошибку из-за того что криво был подключен 17 стандарт, насчёт const
если писать через auto:
C++
1
2
  for (auto& entry : fs::directory_iterator(path))
        std::cout << entry.path() << std::endl;
То всё прекрасно работает.
Eсли использовать полноценную запись:
C++
1
2
 for (const std::filesystem::directory_entry& entry : fs::directory_iterator(path))
        std::cout << entry.path() << std::endl;
То, обязательно надо ставить const без этого будет ошибка.
Видимо auto сам доставляет const по другому я объяснить не могу =)
0
С чаем беда...
Эксперт CЭксперт С++
10008 / 5354 / 1467
Регистрация: 18.10.2014
Сообщений: 12,901
18.05.2022, 03:17 6
Лучший ответ Сообщение было отмечено Xpystum как решение

Решение

Цитата Сообщение от Xpystum Посмотреть сообщение
Уже додумался, не написал с fs::directory_entry, потому что выдавало ошибку из-за того что криво был подключен 17 стандарт,
Но такой цикл не имеет никакого отношения к 17 стандарт. Это С++11.

Цитата Сообщение от Xpystum Посмотреть сообщение
Видимо auto сам доставляет const по другому я объяснить не могу =)
Да, так и есть. То есть const не обязательно. Но лучше с ним.
0
2 / 2 / 0
Регистрация: 05.12.2018
Сообщений: 69
18.05.2022, 03:53  [ТС] 7
Извиняюсь за спам, у меня с сайтом проблемы и дублирует по 10 раз.
Да у меня сначала были проблемы fs::directory_entry - после подключение с++17, все заработало...
насчёт const учту спасибо =)
0
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru