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

Поиск слова в пачке файлов. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ [Error] 'error' was not declared in this scope http://www.cyberforum.ru/cpp-beginners/thread442172.html
Вот кусок кода void Token_stream::putback(Token t) { if (full) error("putback() into a full buffer"); buffer = t; // copy t to buffer full = true; // buffer is now full }...
C++ Почему программа вылетает при конкатенации строк? Собственно код #ifndef __STRING #define __STRING #include <ostream> class String { public: String(); http://www.cyberforum.ru/cpp-beginners/thread442170.html
Проверка столбцов на наличие одинаковых элементов C++
Как осуществить в двумерном массиве проверку на наличие в столбцах одинаковых элементов, код программы не могу составить
Запретить нажатие клавиши Win C++
Приветствую. Подскажите, как можно запретить нажатие клавиши Win?? Требуется чтобы приложение не реагировало на нажатие клавиши Win, и на сочитания Win+D , Win+M , Win+Tab. Как можно сее...
C++ Вывести H — длину каждого отрезка... http://www.cyberforum.ru/cpp-beginners/thread442071.html
Дано целое число N (> 1) и две вещественные точки на числовой оси: A, B (A < B). Отрезок разбит на N равных отрезков. Вывести H — длину каждого отрезка, а также значения функции F(X) = 1 – sin(X) в...
C++ Преобразование ipv6 в бинарную строку IPv6 адрес это 128-битный адрес. Он разделяется на части по 16 бит, которые преобразуются в 4-значные шестнадцатеричные числа и разделяются двоеточиями. Представление адресов IPv6 может быть еще... подробнее

Показать сообщение отдельно
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
08.02.2012, 13:32
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <iostream>
#include <string>
#include <fstream>
#include <boost/filesystem.hpp>
#include <boost/program_options.hpp>
 
namespace fs = boost::filesystem;
namespace po = boost::program_options;
 
namespace
{
 
std::string directory;
std::string for_search_string;
 
void init_config(int argc, char* argv[])
{
   po::options_description desc("Program options");
   desc.add_options()
      ("help", "produce help message")
      ("directory,d", po::value<std::string>(), "dirrectory for search in")
      ("string,s", po::value<std::string>(), "string for search in files");
   po::variables_map vm;
   po::store(po::command_line_parser(argc, argv).options(desc).run(), vm);
   if ((vm.count("help") || (vm.count("directory") && vm.count("string"))) == 0)
   {
      throw std::logic_error("Config_error");
   }
   else
   {
      if (vm.count("help"))
      {
         std::cout << desc << std::endl;
      }
      else
      {
         directory = vm["directory"].as<std::string>();
         for_search_string = vm["string"].as<std::string>();
      }
   }
}
 
void search_in_dir()
{
   fs::path path(directory);
   for (fs::directory_iterator iter = fs::directory_iterator(path); 
        iter != fs::directory_iterator(); ++iter)
   {
      if (!fs::is_regular_file(iter->path()))
      {
         continue;
      }
      std::ifstream ifs(iter->path().string().c_str());
      std::string s;
      while (std::getline(ifs, s))
      {
         if (s.find(for_search_string) != std::string::npos)
         {
            std::cout << iter->path().string() << std::endl;
            break;
         }
      }
   }
}
 
}
 
int main(int argc, char* argv[])
{
   try
   {
      init_config(argc, argv);
   }
   catch (const std::logic_error& e)
   {
      std::cerr << "Wrong config. Use ./new --help" << std::endl;
      return 1;
   }
   if (directory.empty() || for_search_string.empty())
   {
      return 0;
   }
   search_in_dir();
}
Bash
1
2
3
4
5
6
7
8
9
10
11
12
forever@pterois:~/My_pro1/cpp_pro/tmp$ ls
file1  file2  file3
forever@pterois:~/My_pro1/cpp_pro/tmp$ cat file1
fashjfashjfhajsfhajhfjaVisualCsjdkskjfksjfksjfksjkaj;asfsf
forever@pterois:~/My_pro1/cpp_pro/tmp$ cat file2
fskjfksjkafjskajlfls
forever@pterois:~/My_pro1/cpp_pro/tmp$ cat file3
ksakjfsakfjaksfjkqajVisualC
forever@pterois:~/My_pro1/cpp_pro/tmp$ cd ../
forever@pterois:~/My_pro1/cpp_pro$ ./new -d /home/forever/My_pro1/cpp_pro/tmp/ -s VisualC
/home/forever/My_pro1/cpp_pro/tmp/file1
/home/forever/My_pro1/cpp_pro/tmp/file3
Ищет не обособленно стоящие, а так же в непрерывном тексте. Чтобы искало только обособленно стоящие нужно добавить всего 1 строчку.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru