#pragma once #include #include #include #include #include class FileTools { public: static std::vector getFiles(std::string path) { std::vector files; getFiles(path, files); return files; } static void write_log(std::string filepath, std::string log) { std::ofstream ofs(filepath, std::ios::app); ofs << log << std::endl; } private: static void getFiles(std::string path, std::vector& files) { //文件句柄 long hFile = 0; //文件信息 struct _finddata_t fileinfo; std::string p; if ((hFile = _findfirst(p.assign(path).append("\\*").c_str(), &fileinfo))!=-1) { do { //如果是目录,迭代之 //如果不是,加入列表 if ((fileinfo.attrib & _A_SUBDIR)) { if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0) getFiles(p.assign(path).append("\\").append(fileinfo.name), files); } else { files.push_back(p.assign(path).append("\\").append(fileinfo.name)); } } while (_findnext(hFile, &fileinfo) == 0); _findclose(hFile); } } }; class StopWatch { public: StopWatch() { _start = std::chrono::steady_clock::now(); } void reset() { _start = std::chrono::steady_clock::now(); } double elapsed_s() { return std::chrono::duration(std::chrono::steady_clock::now() - _start).count(); } double elapsed_ms() { return std::chrono::duration(std::chrono::steady_clock::now() - _start).count(); } double elapsed_us() { return std::chrono::duration(std::chrono::steady_clock::now() - _start).count(); } double elapsed_ns() { return std::chrono::duration(std::chrono::steady_clock::now() - _start).count(); } private: std::chrono::steady_clock::time_point _start; };