60 lines
1.6 KiB
C++
60 lines
1.6 KiB
C++
#include <iostream>
|
||
#include <fstream>
|
||
#include <string>
|
||
#include <vector>
|
||
#include <omp.h>
|
||
|
||
using namespace std;
|
||
|
||
// Функция поиска файла
|
||
string find_file_with_string(const string& directory) {
|
||
string filename;
|
||
string search_string = "zxcv"; // Строка, которую нужно найти
|
||
|
||
// Получение списка файлов в каталоге
|
||
#pragma omp parallel
|
||
{
|
||
#pragma omp for
|
||
for (int i = 1; i <= 500; ++i) {
|
||
string filedir = directory + '/' + to_string(i) + ".txt";
|
||
|
||
// Поиск строки в файле
|
||
ifstream file(filedir);
|
||
if (file.is_open()) {
|
||
string line;
|
||
while (getline(file, line)) {
|
||
// line.find(search_string) - здесь мы ищем подстроку search_string в строке line
|
||
// Если подстрока не найдена, string::npos обозначает отсутствие позиции в строке. Значит, надо проверять
|
||
if (line.find(search_string) != string::npos) {
|
||
#pragma omp critical
|
||
{
|
||
filename = filedir;
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
file.close();
|
||
}
|
||
}
|
||
}
|
||
|
||
// Возвращение первого найденного файла
|
||
if (filename != "") {
|
||
return "Файл найден!\n" + filename;
|
||
}
|
||
else {
|
||
return "Файл с искомой строкой не найден.";
|
||
}
|
||
}
|
||
|
||
int main() {
|
||
|
||
string directory = "/home/danila/500f/"; // Заменить на реальный путь к каталогу
|
||
|
||
string result = find_file_with_string(directory);
|
||
|
||
cout << result << endl;
|
||
|
||
return 0;
|
||
}
|