gpt4 book ai didi

C++模仿ls之类的命令

转载 作者:太空狗 更新时间:2023-10-29 20:18:54 25 4
gpt4 key购买 nike

如何实现ls "filename_[0-5][3-4]?"类?我想将结果存储在 vector 中。

目前我正在使用调用 lssystem(),但这在 MS 下不可移植。

谢谢,阿曼。

最佳答案

以下程序列出当前目录中名称与正则表达式 filename_[0-5][34] 匹配的文件:

#include <boost/filesystem.hpp>
#include <boost/regex.hpp> // also functional,iostream,iterator,string
namespace bfs = boost::filesystem;

struct match : public std::unary_function<bfs::directory_entry,bool> {
bool operator()(const bfs::directory_entry& d) const {
const std::string pat("filename_[0-5][34]");
std::string fn(d.filename());
return boost::regex_match(fn.begin(), fn.end(), boost::regex(pat));
}
};

int main(int argc, char* argv[])
{
transform_if(bfs::directory_iterator("."), bfs::directory_iterator(),
std::ostream_iterator<std::string>(std::cout, "\n"),
match(),
mem_fun_ref(&bfs::directory_entry::filename));
return 0;
}

为简洁起见,我省略了 transform_if() 的定义。它不是标准函数,但应该很容易实现。

关于C++模仿ls之类的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2808960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com