diff options
author | Cong <congusbongus@gmail.com> | 2021-11-21 09:43:00 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-21 09:43:00 +0300 |
commit | e1c3dac05914e795940f150922db8611fcfac7fd (patch) | |
tree | cc31bb164b72ffcabef0abf63eaaf244eb108d2f | |
parent | bcb6b5c25d0564f2be71ca7d0c1cc8e5e41191fc (diff) |
Update cpp_sample.cpp
-rw-r--r-- | samples/cpp_sample.cpp | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/samples/cpp_sample.cpp b/samples/cpp_sample.cpp index f8e386a..2386cf0 100644 --- a/samples/cpp_sample.cpp +++ b/samples/cpp_sample.cpp @@ -1,4 +1,5 @@ #include <iostream> +#include <list> #include <stdexcept> #include <string> @@ -8,7 +9,9 @@ class TinyDir { public: TinyDir(const std::string& path); ~TinyDir(); - std::string BaseName() const; + std::string baseName() const; + std::list<std::string> listDir(bool filesOnly) const; + private: tinydir_dir* dir; }; @@ -22,10 +25,11 @@ TinyDir::TinyDir(const std::string& path) : dir(new tinydir_dir) { } TinyDir::~TinyDir() { + tinydir_close(dir); delete dir; } -std::string TinyDir::BaseName() const { +std::string TinyDir::baseName() const { const std::string path{dir->path}; auto lastSlash = path.find_last_of("/\\"); if (lastSlash == std::string::npos) { @@ -34,13 +38,30 @@ std::string TinyDir::BaseName() const { return path.substr(lastSlash + 1); } +std::list<std::string> TinyDir::listDir(bool filesOnly) +{ + std::list<std::string> files; + + while (dir->has_next) + { + tinydir_file file; + tinydir_readfile(dir, &file); + + files.push_back(std::string{dir->path} + "/" + file.name); + + tinydir_next(dir); + } + + return files; +} + int main(int argc, char* argv[]) { if (argc != 2) { std::cerr << "Usage: cpp_sample filename\n"; return 1; } TinyDir td{argv[1]}; - std::cout << "Basename is " << td.BaseName() << "\n"; + std::cout << "Basename is " << td.baseName() << "\n"; return 0; } |