std::filesystem::directory_iterator是C++17的一个新的标准库,它可以方便地遍历指定路径下的所有文件和子文件夹,使用它可以有效地管理目录和文件的操作。以下是一个例子:
#include
#include
namespace fs = std::filesystem;
// 使用别名,简化命名空间
int main()
{
fs::path pathToShow(".");
// 使用当前目录
try
{
if (fs::exists(pathToShow)) // 检查路径是否存在
{
if (fs::is_regular_file(pathToShow)) // 检查路径是否文件
std::cout << pathToShow << " size is " << fs::file_size(pathToShow) << '\n';
else if (fs::is_directory(pathToShow)) // 检查路径是否目录
{
std::cout << pathToShow << " is a directory containing:\n";
for (const auto &entry : fs::directory_iterator(pathToShow)) // 遍历目录下所有文件和子文件夹
{
std::cout << entry.path() << '\n'; // 输出文件名
}
}
else
std::cout << pathToShow << " exists, but is not a regular file or directory\n";
}
else
std::cout << pathToShow << " does not exist\n";
}
catch (const fs::filesystem_error &ex)
{
std::cout << ex.what() << '\n'; // 处理异常
}
return 0;
}
这个例子会输出当前目录下的所有文件和子文件夹的名称。如果您需要管理文件和目录,则可以使用此库或查看C++17中的其他标准库。