【问题标题】:What to substitute for glob on C++ Qt?什么可以代替 C++ Qt 上的 glob?
【发布时间】:2016-06-05 03:46:22
【问题描述】:

我想访问一个目录,并解析其中的所有文件。 为此,我找到了一种在此 post 上使用的方法,但显然它适用于 C,而不是 C++(如果我错了,请告诉我)。

我正在使用 Qt,我想知道使用哪种类似的方式来运行我目录中的每个文件。

【问题讨论】:

  • QDir::entryInfoList() 呢?
  • 顺便说一句,大多数 C 库都可以在 C++ 程序中使用。它们是不同的语言,C 不是 C++ 的一个子集,但 10 次中有 9 次(或者可能更多),您可以在 C++ 中使用 C 库。虽然它可能有点难看,但你可以很好地把它包起来。
  • @vahancho 我没想到!我马上用! @BoBTFish 那么有一种方法可以在我的 C++ 应用程序中使用 wrap 使用 <glob.h> 吗?我对 C++ 不放心,所以我可能会说错话和误解。
  • @Tofuw,是的,只要记住添加 extern "C" 就可以了:extern "C" { #include }

标签: c++ qt foreach directory glob


【解决方案1】:

似乎与 glob 等效的是 dir 类中的 entryList 函数。例如。

QStringList pattern = {"calibration-\?\?\?\?-\?\?-\?\?-\?\?\?\?\?\?.zip"};
QDir dir(".");
QStringList files = dir.entryList(pattern);
for (QString file : files) {
  std::cout << file.toStdString() << std::endl;
} 

【讨论】:

    【解决方案2】:

    您查看过QDir 文档吗?这里有你需要的一切,可能还有更多。为什么要使用 C 库?

    【讨论】:

    • 自从@valancho 的推荐是的,但我想这对我来说也是一个很好的练习,试图包装 C 库。我只是 C++ 的新手,所以如果我能探索不同的方式,我全力以赴。
    • @Tofuw 好的,但是阅读文档也是一个很好的练习。与包装 C 库(最有用的已经有包装)相比,这是一项您需要更频繁的宝贵技能。
    • @Tofuw “这对我来说也是一个很好的练习,试图包装 C 库”我不同意。重新发明轮子很少是一个好的练习。去设计你的汽车(你的预期应用),而不是重新设计车轮。只有当你有一辆非常漂亮的汽车可以从某种特殊的轮子(低级实现细节)中受益时,你才会考虑重新设计轮子。专注于您希望项目执行的操作,并利用 Qt 来执行此操作。由于您是新手,仅此一项就需要一些时间,而不必担心实施细节。
    • @Ilya 和 KubaOber 我会听从你的建议。确实,我没有条件查阅文档。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多