Форум программистов, компьютерный форум CyberForum.ru

Поиск текста в файле - C++

Восстановить пароль Регистрация
 
Весло
0 / 0 / 0
Регистрация: 20.04.2011
Сообщений: 12
18.05.2011, 03:12     Поиск текста в файле #1
Требуется написать программу, которая находит в директории файлы с определенным текстом(точнее словом), набранным в другом файле, при этом найденные файлы (в которых имеется найденное слово) необходимо скопировать в подкаталог.

я - новичек, стыдно опозорится, но насколько поняла в начале нужно использовать ф-цию scandir из библиотеки stdio.h, и получив массив из файлов папки использовать цикл и для каждого элемента массива(файла) нужно открыть его командой fopen, а дальше использовать команду strstr и искать содержимое поочередно в файлах, и if true (совпадение - находит слово) - то команда fcopy.
но не имею понятия как это реализовать(( что не пробовала, везде ошибки выбивает.помогите пожалуйста, подойдет код как для Visual C++ 6 так и для Builder 6.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
18.05.2011, 06:10     Поиск текста в файле #2
scandir из библиотеки stdio.h
Это в Unix/Linux.
Весло
0 / 0 / 0
Регистрация: 20.04.2011
Сообщений: 12
18.05.2011, 15:17  [ТС]     Поиск текста в файле #3
как же тогда быть, если я запускаю в винде в вижуал С++ или билдере 6?
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
18.05.2011, 18:22     Поиск текста в файле #4
можно через winapi сделать, или через boost::filesystem

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include<iostream>
#include<string>
#include<boost/filesystem/operations.hpp>
#include<iterator>
#include<fstream>
using namespace boost::filesystem;
 
int main(){
    path p="c:\\myFolder\\", p1="c:\\myFolder1\\"; //где искать и куда копировать
    if(!exists(p)||!exists(p1)){std::cerr<<"Folder not found"; return -1;}
    directory_iterator it(p), endIt;
    std::string sFind="data"; // слово
    for(; it!=endIt; ++it){
        if(!is_directory(*it)){
            std::fstream fs(it->string().c_str());
            if(!fs){std::cerr<<"Error\n"; return -2;}
            std::string s((std::istreambuf_iterator<char>(fs)), std::istreambuf_iterator<char>());
            fs.close();
            if(s.find(sFind)!=std::string::npos){
                copy_file(*it, p1/it->leaf());
                std::cout<<*it<<"\n";
            }
        }
    }
    return 0;
}
Весло
0 / 0 / 0
Регистрация: 20.04.2011
Сообщений: 12
18.05.2011, 20:14  [ТС]     Поиск текста в файле #5
Спасибо Вам большое! а в чем Вы компилировали?
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
18.05.2011, 20:41     Поиск текста в файле #6
IDE может быть любая(например Code::blocks) плюс должна быть установлена библиотека Boost
Весло
0 / 0 / 0
Регистрация: 20.04.2011
Сообщений: 12
18.05.2011, 21:59  [ТС]     Поиск текста в файле #7
я прошу прощения, но вопрос: скачала ваш IDE и Boost, ноне знаю как установить эту библиотеку, чтобы компилировало...(
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
18.05.2011, 22:54     Поиск текста в файле #8
насчёт сборки смотрите статьи в интернете
Весло
0 / 0 / 0
Регистрация: 20.04.2011
Сообщений: 12
19.05.2011, 00:40  [ТС]     Поиск текста в файле #9
ребята, а кто знает как через WinApi реализовать?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2011, 19:23     Поиск текста в файле
Еще ссылки по теме:

C++ Поиск текста в файле между двумя данными словами
Поиск в текстовом файле слова и вывод блока текста, в котором оно встретилось C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Весло
0 / 0 / 0
Регистрация: 20.04.2011
Сообщений: 12
20.05.2011, 19:23  [ТС]     Поиск текста в файле #10
а реально ли написать код без использования boost'a или WinApi. Если кто знает, помогите пожалуйста кодом. Преподаватель потребовал код без использования этих библиотек(
Yandex
Объявления
20.05.2011, 19:23     Поиск текста в файле
Ответ Создать тему
Опции темы

Текущее время: 03:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru