我想制作一个程序,可以搜索计算机上的特定文件夹来查找某些文件。在这种情况下,我希望它寻找文本文件。我听说有些消息来源声称可以使用标准C ++库来完成。如果是这样,我该怎么做呢?我相信工作代码应该是这样的:
string path = "C:\\MyFolder\\";
while(/*Searching through the directory*/)
{
if (/*File name ends with .txt*/)
{
/*Do something*/
}
}
答案 0 :(得分:1)
不支持使用标准库中的目录。然而,努力将Boost.Filesystem
纳入C ++ 17标准。目前,您可以直接使用Boost
。
#include <iostream>
#include <boost/filesystem.hpp>
#include <boost/algorithm/string/predicate.hpp>
int main(int argc, char* argv[])
{
namespace fs = boost::filesystem;
namespace ba = boost::algorithm;
fs::path dir_path(".");
for (const auto& entry : fs::directory_iterator(dir_path)) {
if (fs::is_regular_file(entry)) {
std::string path = entry.path().string();
if (ba::ends_with(path, ".txt")) {
// Do something with entry or just print the path
std::cout << path << std::endl;
}
}
}
}
<强>更新强>
要编译代码段,您需要安装Boost(并且已编译,Filesystem不是仅限标头)。按照教程here进行操作。然后确保链接到boost_filesystem
:
g++ -std=c++11 -Wall test.cc -lboost_filesystem && ./a.out
并且不要忘记在同一目录中创建一些.txt
文件,以便程序可以咀嚼。