std::filesystem::recursive_directory_iterator::disable_recursion_pending
STD::文件系统::递归[医]目录[医]迭代器::禁用[医]递归[医]待决
void disable_recursion_pending( | | (since C++17) |
---|
如果存在,则禁用对当前引用子目录的递归。
调用修改迭代器上挂起的递归标志,以便下次increment
调用时,迭代器将直接在当前中前进,即使它当前引用的子目录中还没有访问%27T。
挂起的递归标志的状态可以用recursion_pending()
,也就是false
打完这个电话。它被重新设置为true
后increment
,它的初始值也是true
...
如果*this
是末端迭代器。
参数
%280%29
返回值
%280%29
例外
%280%29
例
二次
#include <fstream>
#include <iostream>
#include <string>
#include <filesystem>
namespace fs = std::filesystem;
int main()
{
fs::create_directories("sandbox/a/b/c"
fs::create_directories("sandbox/a/b/d/e"
std::ofstream("sandbox/a/b/file1.txt"
fs::create_symlink("a", "sandbox/syma"
for(auto i = fs::recursive_directory_iterator("sandbox"
i != fs::recursive_directory_iterator(
++i ) {
std::cout << std::string(i.depth(), ' ') << *i;
if(fs::is_symlink(i->symlink_status()))
std::cout << " -> " << fs::read_symlink(*i
std::cout << '\n';
// do not descend into "b"
if(i->path().filename() == "b")
i.disable_recursion_pending(
}
fs::remove_all("sandbox"
}
二次
产出:
二次
"sandbox/a"
"sandbox/a/b"
"sandbox/syma" -> "a"
二次
另见
recursion_pending | checks whether the recursion is disabled for the current directory (public member function) |
---|---|
incrementoperator++ | advances to the next entry (public member function) |
© cppreference.com
在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。
http://en.cppreference.com/w/cpp/filesystem/递归[医]目录[医]迭代器/禁用[医]递归[医]待决