Advertisement
Infra_HDC

proga.cpp

Jun 6th, 2019
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.68 KB | None | 0 0
  1. #include <string>
  2. #include <regex>
  3. #include <iostream>
  4. #include <dirent.h>
  5.  
  6. #define FIND_DIR "." // здесь указываем каталог, в котором искать файлы
  7.  
  8. int give_fnn_number(char s[])
  9. { // функция выделяет номер из имени файла
  10.         auto m = std::__cxx11::cmatch{};
  11.         std::__cxx11::string fn_prefix, fn_number, t;
  12.         // сюда вручную вбить префикс вместо имя,
  13.         // не разобрался как загнать его в параметры
  14.         if (std::regex_match(s, m, std::__cxx11::regex{ R"(^(имя)(\d+)$)" }))
  15.         {
  16.                 fn_prefix = m[1].str();
  17.                 fn_number = m[2].str();
  18.         }
  19.         else
  20.         {
  21.                 return -1;
  22.         }
  23.         int fnn_number;
  24.         fnn_number = std::stoi(fn_number);
  25.         return fnn_number;
  26. }
  27.  
  28. int main()
  29. {
  30.         int detected_fn_number = -1; // максимальный обнаруженный номер файла
  31.         /* Compiling for UNIX / POSIX */
  32.         DIR *dir = opendir(FIND_DIR);
  33.         if(dir)
  34.         {
  35.                 struct dirent *ent;
  36.                 while((ent = readdir(dir)) != NULL)
  37.                 {
  38.                         int tt = give_fnn_number(ent->d_name);
  39.                         if ( tt > detected_fn_number )
  40.                         {
  41.                                 detected_fn_number = tt;
  42.                         }
  43.                 }
  44.         }
  45.         else
  46.         {
  47.                 fprintf(stderr, "Error opening directory\n"); return 1;
  48.         }
  49.         std::cout << "имя" << detected_fn_number+1 << "\n";
  50.         return 0;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement