Операции с файлами и папками в C++

Я пишу программу todo list manager на C++ и хотел бы сделать следующее:

  1. Проверьте, существует ли каталог в рабочем каталоге программы, если не создать его
  2. Если он существует, получить список .txt файлы из него.
  3. Возможность создания / удаления .txt файлы из этого каталога

Я пробовал использоватьboost/filesystem.hpp, но не могу понять (или как заставить его связать с помощью g++). Ниже приведен пример того, что я пытался (предположим, proper #includes‘ s, int mainи т. д):

std::vector<std::string> findLists(void){
    std::vector<std::string> lists;
    std::string temp;
    char dir[ MAX_PATH ];
    std::string(dir, GetModuleFileName(NULL, dir, MAX_PATH));
    dir = dir.substr(0,dir.find_last_of( "/" ));
    path p(dir);
    for(auto i = directory_iterator(p); i != directory_iterator(); i++){
        if(!is_directory(i->path())){
            temp = i->path().filename().string();
            if(temp.compare(0,temp.find(".")+1,".txt")){
                temp = temp.substr(0,temp.find("."));
            }
            lists.push_back(temp);
        }
        else{
            continue;
        }
    }

    return lists;
}

1 ответ

  1. Из документации Boost

    int main(int argc, char* argv[])
    {
      path p (argv[1]);   // p reads clearer than argv[1] in the following code
    
      if (exists(p))    // does p actually exist?
      {
        if (is_regular_file(p))        // is p a regular file?   
          cout << p << " size is " << file_size(p) << '\n';
    
        else if (is_directory(p))      // is p a directory?
          cout << p << "is a directory\n";
    
        else
          cout << p << "exists, but is neither a regular file nor a directory\n";
      }
      else
        cout << p << "does not exist\n";
    
      return 0;
    }
    

    У вас есть все необходимые удобства. Это только начало, но вы должны быть в состоянии пройти через это довольно быстро.