From 1295a119322f3c3c1a5655fa22312b0dacc34bf0 Mon Sep 17 00:00:00 2001 From: Sasza Stanczew Date: Fri, 26 Apr 2024 11:05:54 +0200 Subject: [PATCH] AdvC++ - zadanie searcher --- .../Presentation/exercises/searcher/searcher.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/AdvancedCppV2/Presentation/exercises/searcher/searcher.cpp b/AdvancedCppV2/Presentation/exercises/searcher/searcher.cpp index 9fe212c..67373c6 100644 --- a/AdvancedCppV2/Presentation/exercises/searcher/searcher.cpp +++ b/AdvancedCppV2/Presentation/exercises/searcher/searcher.cpp @@ -14,7 +14,15 @@ namespace rn = std::ranges; std::vector searchFiles(std::string_view keyWord, const fs::path& dirName) { std::vector paths; - // Write implementation here + auto reg_file = [](fs::directory_entry e){return fs::is_regular_file(e);}; + + for (const fs::directory_entry& entry : fs::directory_iterator(dirName) | std::views::filter(reg_file)) { + std::ifstream file(entry.path()); + const auto res = std::find_if(std::istream_iterator(file), std::istream_iterator{}, + [keyWord](const auto& str){ return str == keyWord; }); + if(res != std::istream_iterator{}) + paths.push_back(entry.path()); + } return paths; } @@ -23,4 +31,4 @@ int main() { std::cout << "Files which contains word Ala:\n"; const auto& res = searchFiles("Ala", fs::current_path().string() + "/files"); rn::copy(res, std::ostream_iterator(std::cout, "\n")); -} \ No newline at end of file +}