Добавил:
itan_hunt
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:lab6 / findInFiles
.cpp#include "Aho_Corasick.h"
#include <iostream>
#include <string>
#include <set>
#include <experimental/filesystem>
#include <fstream>
using namespace std;
using namespace std::experimental::filesystem;
int main(int argc, char const *argv[]) {
locale::global(locale(""));
if (argc > 1) {
set<wstring> patterns;
for(int i = 1; i < argc; i++) {
string buffer(argv[i]);
wstring wstringBuffer(buffer.begin(), buffer.end());
patterns.emplace(wstringBuffer);
}
Trie trie(patterns);
path myPath(".");
for(auto& fileOrFolder: directory_iterator(myPath)) {
if (!is_directory(fileOrFolder)) {
wifstream file(fileOrFolder.path().filename());
wstring content;
getline(file, content, (wchar_t)file.eof());
map<wstring, set<lli>> solutions = AhoCorasick(content, trie);
if (!solutions.empty()) {
wcout << fileOrFolder.path().filename() << endl;
for(auto &solution:solutions) {
wcout << "{ " << solution.first << L" ";
for(auto &patternIndex: solution.second) {
wcout << patternIndex << L" ";
}
wcout << "}" << endl;
}
wcout << endl;
}
}
}
} else {
wcout << L"Too few arguments. Try again." << endl;
}
return 0;
}
Соседние файлы в папке lab6