在线文档教程
C++
文件系统 | Filesystem

std::filesystem::recursive_directory_iterator::disable_recursion_pending

STD::文件系统::递归[医]目录[医]迭代器::禁用[医]递归[医]待决

void disable_recursion_pending((since C++17)

如果存在,则禁用对当前引用子目录的递归。

调用修改迭代器上挂起的递归标志,以便下次increment调用时,迭代器将直接在当前中前进,即使它当前引用的子目录中还没有访问%27T。

挂起的递归标志的状态可以用recursion_pending(),也就是false打完这个电话。它被重新设置为trueincrement,它的初始值也是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_pendingchecks 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/递归[医]目录[医]迭代器/禁用[医]递归[医]待决