[{"data":1,"prerenderedAt":3529},["ShallowReactive",2],{"wiki-page-\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2000-std-filesystem":3,"wiki-doc-items-2023-10-05-cplusplus-jiao-xue":2969,"wiki:author-members":3517},{"id":4,"title":5,"authors":6,"body":8,"chapterDepth":73,"chapterOrder":2957,"date":2958,"description":66,"docKey":2959,"docRoot":2960,"docTitle":2961,"extension":2962,"isWikiDoc":120,"isWikiIndex":2963,"meta":2964,"navigation":120,"path":2965,"seo":2966,"stem":2967,"wikiDepth":73,"__hash__":2968},"wiki\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-2000-std-filesystem.md","std::filesystem",[7],"董佳辉",{"type":9,"value":10,"toc":2935},"minimark",[11,15,28,38,41,50,54,57,60,82,85,363,366,521,524,529,837,843,851,855,1107,1112,1118,1122,1593,1598,1604,1608,2114,2119,2125,2127,2130,2133,2250,2254,2257,2315,2357,2361,2653,2657,2663,2669,2672,2677,2706,2712,2724,2747,2754,2762,2783,2797,2806,2817,2820,2875,2878,2931],[12,13,14],"h2",{"id":14},"本节解决什么问题",[16,17,18,19,23,24,27],"p",{},"在 C++17 之前，操作文件和目录（遍历、创建、删除、检查是否存在）需要依赖平台特定的 API（如 POSIX 的 ",[20,21,22],"code",{},"\u003Cdirent.h>","、Windows 的 ",[20,25,26],{},"FindFirstFile","），代码不能跨平台。",[16,29,30,32,33,37],{},[20,31,5],{}," 提供了",[34,35,36],"strong",{},"跨平台的文件系统操作","，一套代码在 Linux、macOS、Windows 上都能用。",[12,39,40],{"id":40},"这个特性是什么",[16,42,43,45,46,49],{},[20,44,5],{}," 是 C++17 引入的文件系统库，提供了路径处理、文件\u002F目录操作、遍历、权限查询等功能。核心类是 ",[20,47,48],{},"std::filesystem::path","。",[12,51,53],{"id":52},"c-标准版本","C++ 标准版本",[16,55,56],{},"C++17",[12,58,59],{"id":59},"需要的头文件",[61,62,67],"pre",{"className":63,"code":64,"language":65,"meta":66,"style":66},"language-cpp shiki shiki-themes github-light github-dark","#include \u003Cfilesystem>\n","cpp","",[20,68,69],{"__ignoreMap":66},[70,71,74,78],"span",{"class":72,"line":73},"line",1,[70,75,77],{"class":76},"szBVR","#include",[70,79,81],{"class":80},"sZZnC"," \u003Cfilesystem>\n",[12,83,84],{"id":84},"基本语法",[61,86,88],{"className":63,"code":87,"language":65,"meta":66,"style":66},"namespace fs = std::filesystem;\n\nfs::path p = \"\u002Fhome\u002Fuser\u002Fdata.txt\";  \u002F\u002F 路径对象\n\n\u002F\u002F 检查文件\nfs::exists(p);          \u002F\u002F 是否存在\nfs::is_regular_file(p); \u002F\u002F 是否是普通文件\nfs::is_directory(p);    \u002F\u002F 是否是目录\nfs::file_size(p);       \u002F\u002F 文件大小\n\n\u002F\u002F 操作\nfs::create_directory(p);     \u002F\u002F 创建目录\nfs::copy(src, dst);           \u002F\u002F 拷贝文件\nfs::remove(p);                \u002F\u002F 删除文件\u002F目录\nfs::rename(old, new);         \u002F\u002F 重命名\n\n\u002F\u002F 遍历\nfor (const auto& entry : fs::directory_iterator(p)) { ... }      \u002F\u002F 非递归\nfor (const auto& entry : fs::recursive_directory_iterator(p)) {} \u002F\u002F 递归\n",[20,89,90,115,122,144,149,155,171,186,201,216,221,227,242,258,273,295,300,306,337],{"__ignoreMap":66},[70,91,92,95,99,102,105,109,112],{"class":72,"line":73},[70,93,94],{"class":76},"namespace",[70,96,98],{"class":97},"sScJk"," fs",[70,100,101],{"class":76}," =",[70,103,104],{"class":97}," std",[70,106,108],{"class":107},"sVt8B","::",[70,110,111],{"class":97},"filesystem",[70,113,114],{"class":107},";\n",[70,116,118],{"class":72,"line":117},2,[70,119,121],{"emptyLinePlaceholder":120},true,"\n",[70,123,125,128,131,134,137,140],{"class":72,"line":124},3,[70,126,127],{"class":97},"fs",[70,129,130],{"class":107},"::path p ",[70,132,133],{"class":76},"=",[70,135,136],{"class":80}," \"\u002Fhome\u002Fuser\u002Fdata.txt\"",[70,138,139],{"class":107},";",[70,141,143],{"class":142},"sJ8bj","  \u002F\u002F 路径对象\n",[70,145,147],{"class":72,"line":146},4,[70,148,121],{"emptyLinePlaceholder":120},[70,150,152],{"class":72,"line":151},5,[70,153,154],{"class":142},"\u002F\u002F 检查文件\n",[70,156,158,160,162,165,168],{"class":72,"line":157},6,[70,159,127],{"class":97},[70,161,108],{"class":107},[70,163,164],{"class":97},"exists",[70,166,167],{"class":107},"(p);",[70,169,170],{"class":142},"          \u002F\u002F 是否存在\n",[70,172,174,176,178,181,183],{"class":72,"line":173},7,[70,175,127],{"class":97},[70,177,108],{"class":107},[70,179,180],{"class":97},"is_regular_file",[70,182,167],{"class":107},[70,184,185],{"class":142}," \u002F\u002F 是否是普通文件\n",[70,187,189,191,193,196,198],{"class":72,"line":188},8,[70,190,127],{"class":97},[70,192,108],{"class":107},[70,194,195],{"class":97},"is_directory",[70,197,167],{"class":107},[70,199,200],{"class":142},"    \u002F\u002F 是否是目录\n",[70,202,204,206,208,211,213],{"class":72,"line":203},9,[70,205,127],{"class":97},[70,207,108],{"class":107},[70,209,210],{"class":97},"file_size",[70,212,167],{"class":107},[70,214,215],{"class":142},"       \u002F\u002F 文件大小\n",[70,217,219],{"class":72,"line":218},10,[70,220,121],{"emptyLinePlaceholder":120},[70,222,224],{"class":72,"line":223},11,[70,225,226],{"class":142},"\u002F\u002F 操作\n",[70,228,230,232,234,237,239],{"class":72,"line":229},12,[70,231,127],{"class":97},[70,233,108],{"class":107},[70,235,236],{"class":97},"create_directory",[70,238,167],{"class":107},[70,240,241],{"class":142},"     \u002F\u002F 创建目录\n",[70,243,245,247,249,252,255],{"class":72,"line":244},13,[70,246,127],{"class":97},[70,248,108],{"class":107},[70,250,251],{"class":97},"copy",[70,253,254],{"class":107},"(src, dst);",[70,256,257],{"class":142},"           \u002F\u002F 拷贝文件\n",[70,259,261,263,265,268,270],{"class":72,"line":260},14,[70,262,127],{"class":97},[70,264,108],{"class":107},[70,266,267],{"class":97},"remove",[70,269,167],{"class":107},[70,271,272],{"class":142},"                \u002F\u002F 删除文件\u002F目录\n",[70,274,276,278,280,283,286,289,292],{"class":72,"line":275},15,[70,277,127],{"class":97},[70,279,108],{"class":107},[70,281,282],{"class":97},"rename",[70,284,285],{"class":107},"(old, ",[70,287,288],{"class":76},"new",[70,290,291],{"class":107},");",[70,293,294],{"class":142},"         \u002F\u002F 重命名\n",[70,296,298],{"class":72,"line":297},16,[70,299,121],{"emptyLinePlaceholder":120},[70,301,303],{"class":72,"line":302},17,[70,304,305],{"class":142},"\u002F\u002F 遍历\n",[70,307,309,312,315,318,321,324,326,328,331,334],{"class":72,"line":308},18,[70,310,311],{"class":76},"for",[70,313,314],{"class":107}," (",[70,316,317],{"class":76},"const",[70,319,320],{"class":76}," auto&",[70,322,323],{"class":107}," entry : ",[70,325,127],{"class":97},[70,327,108],{"class":107},[70,329,330],{"class":97},"directory_iterator",[70,332,333],{"class":107},"(p)) { ... }",[70,335,336],{"class":142},"      \u002F\u002F 非递归\n",[70,338,340,342,344,346,348,350,352,354,357,360],{"class":72,"line":339},19,[70,341,311],{"class":76},[70,343,314],{"class":107},[70,345,317],{"class":76},[70,347,320],{"class":76},[70,349,323],{"class":107},[70,351,127],{"class":97},[70,353,108],{"class":107},[70,355,356],{"class":97},"recursive_directory_iterator",[70,358,359],{"class":107},"(p)) {}",[70,361,362],{"class":142}," \u002F\u002F 递归\n",[12,364,365],{"id":365},"常用操作",[367,368,369,383],"table",{},[370,371,372],"thead",{},[373,374,375,380],"tr",{},[376,377,379],"th",{"align":378},"left","操作",[376,381,382],{"align":378},"说明",[384,385,386,397,407,417,427,437,447,457,467,477,487,497,507],"tbody",{},[373,387,388,394],{},[389,390,391],"td",{"align":378},[20,392,393],{},"fs::exists(p)",[389,395,396],{"align":378},"路径是否存在",[373,398,399,404],{},[389,400,401],{"align":378},[20,402,403],{},"fs::is_directory(p)",[389,405,406],{"align":378},"是否目录",[373,408,409,414],{},[389,410,411],{"align":378},[20,412,413],{},"fs::is_regular_file(p)",[389,415,416],{"align":378},"是否普通文件",[373,418,419,424],{},[389,420,421],{"align":378},[20,422,423],{},"fs::create_directory(p)",[389,425,426],{"align":378},"创建目录",[373,428,429,434],{},[389,430,431],{"align":378},[20,432,433],{},"fs::create_directories(p)",[389,435,436],{"align":378},"递归创建目录（类似 mkdir -p）",[373,438,439,444],{},[389,440,441],{"align":378},[20,442,443],{},"fs::copy(src, dst)",[389,445,446],{"align":378},"拷贝文件",[373,448,449,454],{},[389,450,451],{"align":378},[20,452,453],{},"fs::remove(p)",[389,455,456],{"align":378},"删除文件或空目录",[373,458,459,464],{},[389,460,461],{"align":378},[20,462,463],{},"fs::remove_all(p)",[389,465,466],{"align":378},"递归删除（类似 rm -rf）",[373,468,469,474],{},[389,470,471],{"align":378},[20,472,473],{},"fs::rename(old, new)",[389,475,476],{"align":378},"重命名\u002F移动",[373,478,479,484],{},[389,480,481],{"align":378},[20,482,483],{},"p.filename()",[389,485,486],{"align":378},"获取文件名",[373,488,489,494],{},[389,490,491],{"align":378},[20,492,493],{},"p.extension()",[389,495,496],{"align":378},"获取扩展名",[373,498,499,504],{},[389,500,501],{"align":378},[20,502,503],{},"p.parent_path()",[389,505,506],{"align":378},"获取父目录",[373,508,509,514],{},[389,510,511],{"align":378},[20,512,513],{},"p \u002F \"subdir\"",[389,515,516,517,520],{"align":378},"路径拼接（用 ",[20,518,519],{},"\u002F"," 运算符）",[12,522,523],{"id":523},"示例代码",[525,526,528],"h3",{"id":527},"示例-1检查文件目录是否存在和大小的信息","示例 1：检查文件\u002F目录是否存在和大小的信息",[61,530,532],{"className":63,"code":531,"language":65,"meta":66,"style":66},"#include \u003Ciostream>\n#include \u003Cfilesystem>\n\nnamespace fs = std::filesystem;\n\nint main()\n{\n    \u002F\u002F 用当前目录做演示\n    fs::path current = fs::current_path();\n    std::cout \u003C\u003C \"Current path: \" \u003C\u003C current \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C \"Exists: \" \u003C\u003C std::boolalpha \u003C\u003C fs::exists(current) \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C \"Is directory: \" \u003C\u003C fs::is_directory(current) \u003C\u003C \"\\n\";\n\n    \u002F\u002F 获取路径的各部分\n    std::cout \u003C\u003C \"Filename: \" \u003C\u003C current.filename() \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C \"Parent path: \" \u003C\u003C current.parent_path() \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C \"Root path: \" \u003C\u003C current.root_path() \u003C\u003C \"\\n\";\n\n    return 0;\n}\n",[20,533,534,541,547,551,567,571,582,587,592,612,646,685,716,720,725,757,787,817,821,831],{"__ignoreMap":66},[70,535,536,538],{"class":72,"line":73},[70,537,77],{"class":76},[70,539,540],{"class":80}," \u003Ciostream>\n",[70,542,543,545],{"class":72,"line":117},[70,544,77],{"class":76},[70,546,81],{"class":80},[70,548,549],{"class":72,"line":124},[70,550,121],{"emptyLinePlaceholder":120},[70,552,553,555,557,559,561,563,565],{"class":72,"line":146},[70,554,94],{"class":76},[70,556,98],{"class":97},[70,558,101],{"class":76},[70,560,104],{"class":97},[70,562,108],{"class":107},[70,564,111],{"class":97},[70,566,114],{"class":107},[70,568,569],{"class":72,"line":151},[70,570,121],{"emptyLinePlaceholder":120},[70,572,573,576,579],{"class":72,"line":157},[70,574,575],{"class":76},"int",[70,577,578],{"class":97}," main",[70,580,581],{"class":107},"()\n",[70,583,584],{"class":72,"line":173},[70,585,586],{"class":107},"{\n",[70,588,589],{"class":72,"line":188},[70,590,591],{"class":142},"    \u002F\u002F 用当前目录做演示\n",[70,593,594,597,600,602,604,606,609],{"class":72,"line":203},[70,595,596],{"class":97},"    fs",[70,598,599],{"class":107},"::path current ",[70,601,133],{"class":76},[70,603,98],{"class":97},[70,605,108],{"class":107},[70,607,608],{"class":97},"current_path",[70,610,611],{"class":107},"();\n",[70,613,614,617,620,623,626,629,632,634,637,641,644],{"class":72,"line":218},[70,615,616],{"class":97},"    std",[70,618,619],{"class":107},"::cout ",[70,621,622],{"class":76},"\u003C\u003C",[70,624,625],{"class":80}," \"Current path: \"",[70,627,628],{"class":76}," \u003C\u003C",[70,630,631],{"class":107}," current ",[70,633,622],{"class":76},[70,635,636],{"class":80}," \"",[70,638,640],{"class":639},"sj4cs","\\n",[70,642,643],{"class":80},"\"",[70,645,114],{"class":107},[70,647,648,650,652,654,657,659,661,664,666,668,670,672,675,677,679,681,683],{"class":72,"line":223},[70,649,616],{"class":97},[70,651,619],{"class":107},[70,653,622],{"class":76},[70,655,656],{"class":80}," \"Exists: \"",[70,658,628],{"class":76},[70,660,104],{"class":97},[70,662,663],{"class":107},"::boolalpha ",[70,665,622],{"class":76},[70,667,98],{"class":97},[70,669,108],{"class":107},[70,671,164],{"class":97},[70,673,674],{"class":107},"(current) ",[70,676,622],{"class":76},[70,678,636],{"class":80},[70,680,640],{"class":639},[70,682,643],{"class":80},[70,684,114],{"class":107},[70,686,687,689,691,693,696,698,700,702,704,706,708,710,712,714],{"class":72,"line":229},[70,688,616],{"class":97},[70,690,619],{"class":107},[70,692,622],{"class":76},[70,694,695],{"class":80}," \"Is directory: \"",[70,697,628],{"class":76},[70,699,98],{"class":97},[70,701,108],{"class":107},[70,703,195],{"class":97},[70,705,674],{"class":107},[70,707,622],{"class":76},[70,709,636],{"class":80},[70,711,640],{"class":639},[70,713,643],{"class":80},[70,715,114],{"class":107},[70,717,718],{"class":72,"line":244},[70,719,121],{"emptyLinePlaceholder":120},[70,721,722],{"class":72,"line":260},[70,723,724],{"class":142},"    \u002F\u002F 获取路径的各部分\n",[70,726,727,729,731,733,736,738,741,744,747,749,751,753,755],{"class":72,"line":275},[70,728,616],{"class":97},[70,730,619],{"class":107},[70,732,622],{"class":76},[70,734,735],{"class":80}," \"Filename: \"",[70,737,628],{"class":76},[70,739,740],{"class":107}," current.",[70,742,743],{"class":97},"filename",[70,745,746],{"class":107},"() ",[70,748,622],{"class":76},[70,750,636],{"class":80},[70,752,640],{"class":639},[70,754,643],{"class":80},[70,756,114],{"class":107},[70,758,759,761,763,765,768,770,772,775,777,779,781,783,785],{"class":72,"line":297},[70,760,616],{"class":97},[70,762,619],{"class":107},[70,764,622],{"class":76},[70,766,767],{"class":80}," \"Parent path: \"",[70,769,628],{"class":76},[70,771,740],{"class":107},[70,773,774],{"class":97},"parent_path",[70,776,746],{"class":107},[70,778,622],{"class":76},[70,780,636],{"class":80},[70,782,640],{"class":639},[70,784,643],{"class":80},[70,786,114],{"class":107},[70,788,789,791,793,795,798,800,802,805,807,809,811,813,815],{"class":72,"line":302},[70,790,616],{"class":97},[70,792,619],{"class":107},[70,794,622],{"class":76},[70,796,797],{"class":80}," \"Root path: \"",[70,799,628],{"class":76},[70,801,740],{"class":107},[70,803,804],{"class":97},"root_path",[70,806,746],{"class":107},[70,808,622],{"class":76},[70,810,636],{"class":80},[70,812,640],{"class":639},[70,814,643],{"class":80},[70,816,114],{"class":107},[70,818,819],{"class":72,"line":308},[70,820,121],{"emptyLinePlaceholder":120},[70,822,823,826,829],{"class":72,"line":339},[70,824,825],{"class":76},"    return",[70,827,828],{"class":639}," 0",[70,830,114],{"class":107},[70,832,834],{"class":72,"line":833},20,[70,835,836],{"class":107},"}\n",[16,838,839,842],{},[34,840,841],{},"运行结果","（路径因机器而异）：",[61,844,849],{"className":845,"code":847,"language":848},[846],"language-text","Current path: \"\u002Fhome\u002Fuser\u002FMySource\u002Fmy-blog\"\nExists: true\nIs directory: true\nFilename: \"my-blog\"\nParent path: \"\u002Fhome\u002Fuser\u002FMySource\"\nRoot path: \"\u002F\"\n","text",[20,850,847],{"__ignoreMap":66},[525,852,854],{"id":853},"示例-2在示例-1-基础上遍历目录中的所有文件","示例 2：在示例 1 基础上，遍历目录中的所有文件",[61,856,858],{"className":63,"code":857,"language":65,"meta":66,"style":66},"#include \u003Ciostream>\n#include \u003Cfilesystem>\n\nnamespace fs = std::filesystem;\n\nint main()\n{\n    fs::path dir = fs::current_path();\n\n    std::cout \u003C\u003C \"Contents of \" \u003C\u003C dir \u003C\u003C \":\\n\";\n    std::cout \u003C\u003C \"--------------------------------\\n\";\n\n    \u002F\u002F 遍历当前目录（不递归子目录）\n    for (const auto& entry : fs::directory_iterator(dir))\n    {\n        std::string type = entry.is_directory() ? \"[DIR] \" : \"[FILE]\";\n        std::cout \u003C\u003C type \u003C\u003C \" \" \u003C\u003C entry.path().filename().string() \u003C\u003C \"\\n\";\n    }\n\n    return 0;\n}\n",[20,859,860,866,872,876,892,896,904,908,925,929,956,973,977,982,1004,1009,1040,1085,1090,1094,1102],{"__ignoreMap":66},[70,861,862,864],{"class":72,"line":73},[70,863,77],{"class":76},[70,865,540],{"class":80},[70,867,868,870],{"class":72,"line":117},[70,869,77],{"class":76},[70,871,81],{"class":80},[70,873,874],{"class":72,"line":124},[70,875,121],{"emptyLinePlaceholder":120},[70,877,878,880,882,884,886,888,890],{"class":72,"line":146},[70,879,94],{"class":76},[70,881,98],{"class":97},[70,883,101],{"class":76},[70,885,104],{"class":97},[70,887,108],{"class":107},[70,889,111],{"class":97},[70,891,114],{"class":107},[70,893,894],{"class":72,"line":151},[70,895,121],{"emptyLinePlaceholder":120},[70,897,898,900,902],{"class":72,"line":157},[70,899,575],{"class":76},[70,901,578],{"class":97},[70,903,581],{"class":107},[70,905,906],{"class":72,"line":173},[70,907,586],{"class":107},[70,909,910,912,915,917,919,921,923],{"class":72,"line":188},[70,911,596],{"class":97},[70,913,914],{"class":107},"::path dir ",[70,916,133],{"class":76},[70,918,98],{"class":97},[70,920,108],{"class":107},[70,922,608],{"class":97},[70,924,611],{"class":107},[70,926,927],{"class":72,"line":203},[70,928,121],{"emptyLinePlaceholder":120},[70,930,931,933,935,937,940,942,945,947,950,952,954],{"class":72,"line":218},[70,932,616],{"class":97},[70,934,619],{"class":107},[70,936,622],{"class":76},[70,938,939],{"class":80}," \"Contents of \"",[70,941,628],{"class":76},[70,943,944],{"class":107}," dir ",[70,946,622],{"class":76},[70,948,949],{"class":80}," \":",[70,951,640],{"class":639},[70,953,643],{"class":80},[70,955,114],{"class":107},[70,957,958,960,962,964,967,969,971],{"class":72,"line":223},[70,959,616],{"class":97},[70,961,619],{"class":107},[70,963,622],{"class":76},[70,965,966],{"class":80}," \"--------------------------------",[70,968,640],{"class":639},[70,970,643],{"class":80},[70,972,114],{"class":107},[70,974,975],{"class":72,"line":229},[70,976,121],{"emptyLinePlaceholder":120},[70,978,979],{"class":72,"line":244},[70,980,981],{"class":142},"    \u002F\u002F 遍历当前目录（不递归子目录）\n",[70,983,984,987,989,991,993,995,997,999,1001],{"class":72,"line":260},[70,985,986],{"class":76},"    for",[70,988,314],{"class":107},[70,990,317],{"class":76},[70,992,320],{"class":76},[70,994,323],{"class":107},[70,996,127],{"class":97},[70,998,108],{"class":107},[70,1000,330],{"class":97},[70,1002,1003],{"class":107},"(dir))\n",[70,1005,1006],{"class":72,"line":275},[70,1007,1008],{"class":107},"    {\n",[70,1010,1011,1014,1017,1019,1022,1024,1026,1029,1032,1035,1038],{"class":72,"line":297},[70,1012,1013],{"class":97},"        std",[70,1015,1016],{"class":107},"::string type ",[70,1018,133],{"class":76},[70,1020,1021],{"class":107}," entry.",[70,1023,195],{"class":97},[70,1025,746],{"class":107},[70,1027,1028],{"class":76},"?",[70,1030,1031],{"class":80}," \"[DIR] \"",[70,1033,1034],{"class":76}," :",[70,1036,1037],{"class":80}," \"[FILE]\"",[70,1039,114],{"class":107},[70,1041,1042,1044,1046,1048,1051,1053,1056,1058,1060,1063,1066,1068,1070,1073,1075,1077,1079,1081,1083],{"class":72,"line":302},[70,1043,1013],{"class":97},[70,1045,619],{"class":107},[70,1047,622],{"class":76},[70,1049,1050],{"class":107}," type ",[70,1052,622],{"class":76},[70,1054,1055],{"class":80}," \" \"",[70,1057,628],{"class":76},[70,1059,1021],{"class":107},[70,1061,1062],{"class":97},"path",[70,1064,1065],{"class":107},"().",[70,1067,743],{"class":97},[70,1069,1065],{"class":107},[70,1071,1072],{"class":97},"string",[70,1074,746],{"class":107},[70,1076,622],{"class":76},[70,1078,636],{"class":80},[70,1080,640],{"class":639},[70,1082,643],{"class":80},[70,1084,114],{"class":107},[70,1086,1087],{"class":72,"line":308},[70,1088,1089],{"class":107},"    }\n",[70,1091,1092],{"class":72,"line":339},[70,1093,121],{"emptyLinePlaceholder":120},[70,1095,1096,1098,1100],{"class":72,"line":833},[70,1097,825],{"class":76},[70,1099,828],{"class":639},[70,1101,114],{"class":107},[70,1103,1105],{"class":72,"line":1104},21,[70,1106,836],{"class":107},[16,1108,1109,1111],{},[34,1110,841],{},"（因目录内容而异）：",[61,1113,1116],{"className":1114,"code":1115,"language":848},[846],"Contents of \"\u002Fhome\u002Fuser\u002FMySource\u002Fmy-blog\":\n--------------------------------\n[DIR]  .git\n[DIR]  app\n[DIR]  content\n[FILE] nuxt.config.ts\n[FILE] package.json\n[FILE] README.md\n...\n",[20,1117,1115],{"__ignoreMap":66},[525,1119,1121],{"id":1120},"示例-3在示例-2-基础上过滤特定扩展名的文件","示例 3：在示例 2 基础上，过滤特定扩展名的文件",[61,1123,1125],{"className":63,"code":1124,"language":65,"meta":66,"style":66},"#include \u003Ciostream>\n#include \u003Cfilesystem>\n#include \u003Cvector>\n\nnamespace fs = std::filesystem;\n\n\u002F\u002F 查找指定目录下所有 .md 文件\nstd::vector\u003Cfs::path> find_md_files(const fs::path& dir)\n{\n    std::vector\u003Cfs::path> result;\n    for (const auto& entry : fs::recursive_directory_iterator(dir))\n    {\n        if (entry.is_regular_file() && entry.path().extension() == \".md\")\n        {\n            result.push_back(entry.path());\n        }\n    }\n    return result;\n}\n\nint main()\n{\n    fs::path dir = fs::current_path() \u002F \"content\";\n\n    if (!fs::exists(dir))\n    {\n        std::cout \u003C\u003C \"Directory not found: \" \u003C\u003C dir \u003C\u003C \"\\n\";\n        return 1;\n    }\n\n    auto md_files = find_md_files(dir);\n\n    std::cout \u003C\u003C \"Found \" \u003C\u003C md_files.size() \u003C\u003C \" .md files:\\n\";\n    for (const auto& f : md_files)\n    {\n        std::cout \u003C\u003C \"  \" \u003C\u003C f.filename().string() \u003C\u003C \"\\n\";\n    }\n\n    return 0;\n}\n",[20,1126,1127,1133,1139,1146,1150,1166,1170,1175,1221,1225,1245,1265,1269,1303,1308,1324,1329,1333,1339,1343,1347,1355,1360,1384,1389,1408,1413,1439,1450,1455,1460,1477,1482,1515,1529,1534,1569,1574,1579,1588],{"__ignoreMap":66},[70,1128,1129,1131],{"class":72,"line":73},[70,1130,77],{"class":76},[70,1132,540],{"class":80},[70,1134,1135,1137],{"class":72,"line":117},[70,1136,77],{"class":76},[70,1138,81],{"class":80},[70,1140,1141,1143],{"class":72,"line":124},[70,1142,77],{"class":76},[70,1144,1145],{"class":80}," \u003Cvector>\n",[70,1147,1148],{"class":72,"line":146},[70,1149,121],{"emptyLinePlaceholder":120},[70,1151,1152,1154,1156,1158,1160,1162,1164],{"class":72,"line":151},[70,1153,94],{"class":76},[70,1155,98],{"class":97},[70,1157,101],{"class":76},[70,1159,104],{"class":97},[70,1161,108],{"class":107},[70,1163,111],{"class":97},[70,1165,114],{"class":107},[70,1167,1168],{"class":72,"line":157},[70,1169,121],{"emptyLinePlaceholder":120},[70,1171,1172],{"class":72,"line":173},[70,1173,1174],{"class":142},"\u002F\u002F 查找指定目录下所有 .md 文件\n",[70,1176,1177,1180,1182,1185,1188,1190,1192,1194,1197,1200,1203,1205,1207,1209,1211,1214,1218],{"class":72,"line":188},[70,1178,1179],{"class":97},"std",[70,1181,108],{"class":107},[70,1183,1184],{"class":97},"vector",[70,1186,1187],{"class":107},"\u003C",[70,1189,127],{"class":97},[70,1191,108],{"class":107},[70,1193,1062],{"class":97},[70,1195,1196],{"class":107},"> ",[70,1198,1199],{"class":97},"find_md_files",[70,1201,1202],{"class":107},"(",[70,1204,317],{"class":76},[70,1206,98],{"class":97},[70,1208,108],{"class":107},[70,1210,1062],{"class":97},[70,1212,1213],{"class":76},"&",[70,1215,1217],{"class":1216},"s4XuR"," dir",[70,1219,1220],{"class":107},")\n",[70,1222,1223],{"class":72,"line":203},[70,1224,586],{"class":107},[70,1226,1227,1229,1232,1234,1236,1239,1242],{"class":72,"line":218},[70,1228,616],{"class":97},[70,1230,1231],{"class":107},"::vector",[70,1233,1187],{"class":76},[70,1235,127],{"class":97},[70,1237,1238],{"class":107},"::path",[70,1240,1241],{"class":76},">",[70,1243,1244],{"class":107}," result;\n",[70,1246,1247,1249,1251,1253,1255,1257,1259,1261,1263],{"class":72,"line":223},[70,1248,986],{"class":76},[70,1250,314],{"class":107},[70,1252,317],{"class":76},[70,1254,320],{"class":76},[70,1256,323],{"class":107},[70,1258,127],{"class":97},[70,1260,108],{"class":107},[70,1262,356],{"class":97},[70,1264,1003],{"class":107},[70,1266,1267],{"class":72,"line":229},[70,1268,1008],{"class":107},[70,1270,1271,1274,1277,1279,1281,1284,1286,1288,1290,1293,1295,1298,1301],{"class":72,"line":244},[70,1272,1273],{"class":76},"        if",[70,1275,1276],{"class":107}," (entry.",[70,1278,180],{"class":97},[70,1280,746],{"class":107},[70,1282,1283],{"class":76},"&&",[70,1285,1021],{"class":107},[70,1287,1062],{"class":97},[70,1289,1065],{"class":107},[70,1291,1292],{"class":97},"extension",[70,1294,746],{"class":107},[70,1296,1297],{"class":76},"==",[70,1299,1300],{"class":80}," \".md\"",[70,1302,1220],{"class":107},[70,1304,1305],{"class":72,"line":260},[70,1306,1307],{"class":107},"        {\n",[70,1309,1310,1313,1316,1319,1321],{"class":72,"line":275},[70,1311,1312],{"class":107},"            result.",[70,1314,1315],{"class":97},"push_back",[70,1317,1318],{"class":107},"(entry.",[70,1320,1062],{"class":97},[70,1322,1323],{"class":107},"());\n",[70,1325,1326],{"class":72,"line":297},[70,1327,1328],{"class":107},"        }\n",[70,1330,1331],{"class":72,"line":302},[70,1332,1089],{"class":107},[70,1334,1335,1337],{"class":72,"line":308},[70,1336,825],{"class":76},[70,1338,1244],{"class":107},[70,1340,1341],{"class":72,"line":339},[70,1342,836],{"class":107},[70,1344,1345],{"class":72,"line":833},[70,1346,121],{"emptyLinePlaceholder":120},[70,1348,1349,1351,1353],{"class":72,"line":1104},[70,1350,575],{"class":76},[70,1352,578],{"class":97},[70,1354,581],{"class":107},[70,1356,1358],{"class":72,"line":1357},22,[70,1359,586],{"class":107},[70,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379,1382],{"class":72,"line":1362},23,[70,1364,596],{"class":97},[70,1366,914],{"class":107},[70,1368,133],{"class":76},[70,1370,98],{"class":97},[70,1372,108],{"class":107},[70,1374,608],{"class":97},[70,1376,746],{"class":107},[70,1378,519],{"class":76},[70,1380,1381],{"class":80}," \"content\"",[70,1383,114],{"class":107},[70,1385,1387],{"class":72,"line":1386},24,[70,1388,121],{"emptyLinePlaceholder":120},[70,1390,1392,1395,1397,1400,1402,1404,1406],{"class":72,"line":1391},25,[70,1393,1394],{"class":76},"    if",[70,1396,314],{"class":107},[70,1398,1399],{"class":76},"!",[70,1401,127],{"class":97},[70,1403,108],{"class":107},[70,1405,164],{"class":97},[70,1407,1003],{"class":107},[70,1409,1411],{"class":72,"line":1410},26,[70,1412,1008],{"class":107},[70,1414,1416,1418,1420,1422,1425,1427,1429,1431,1433,1435,1437],{"class":72,"line":1415},27,[70,1417,1013],{"class":97},[70,1419,619],{"class":107},[70,1421,622],{"class":76},[70,1423,1424],{"class":80}," \"Directory not found: \"",[70,1426,628],{"class":76},[70,1428,944],{"class":107},[70,1430,622],{"class":76},[70,1432,636],{"class":80},[70,1434,640],{"class":639},[70,1436,643],{"class":80},[70,1438,114],{"class":107},[70,1440,1442,1445,1448],{"class":72,"line":1441},28,[70,1443,1444],{"class":76},"        return",[70,1446,1447],{"class":639}," 1",[70,1449,114],{"class":107},[70,1451,1453],{"class":72,"line":1452},29,[70,1454,1089],{"class":107},[70,1456,1458],{"class":72,"line":1457},30,[70,1459,121],{"emptyLinePlaceholder":120},[70,1461,1463,1466,1469,1471,1474],{"class":72,"line":1462},31,[70,1464,1465],{"class":76},"    auto",[70,1467,1468],{"class":107}," md_files ",[70,1470,133],{"class":76},[70,1472,1473],{"class":97}," find_md_files",[70,1475,1476],{"class":107},"(dir);\n",[70,1478,1480],{"class":72,"line":1479},32,[70,1481,121],{"emptyLinePlaceholder":120},[70,1483,1485,1487,1489,1491,1494,1496,1499,1502,1504,1506,1509,1511,1513],{"class":72,"line":1484},33,[70,1486,616],{"class":97},[70,1488,619],{"class":107},[70,1490,622],{"class":76},[70,1492,1493],{"class":80}," \"Found \"",[70,1495,628],{"class":76},[70,1497,1498],{"class":107}," md_files.",[70,1500,1501],{"class":97},"size",[70,1503,746],{"class":107},[70,1505,622],{"class":76},[70,1507,1508],{"class":80}," \" .md files:",[70,1510,640],{"class":639},[70,1512,643],{"class":80},[70,1514,114],{"class":107},[70,1516,1518,1520,1522,1524,1526],{"class":72,"line":1517},34,[70,1519,986],{"class":76},[70,1521,314],{"class":107},[70,1523,317],{"class":76},[70,1525,320],{"class":76},[70,1527,1528],{"class":107}," f : md_files)\n",[70,1530,1532],{"class":72,"line":1531},35,[70,1533,1008],{"class":107},[70,1535,1537,1539,1541,1543,1546,1548,1551,1553,1555,1557,1559,1561,1563,1565,1567],{"class":72,"line":1536},36,[70,1538,1013],{"class":97},[70,1540,619],{"class":107},[70,1542,622],{"class":76},[70,1544,1545],{"class":80}," \"  \"",[70,1547,628],{"class":76},[70,1549,1550],{"class":107}," f.",[70,1552,743],{"class":97},[70,1554,1065],{"class":107},[70,1556,1072],{"class":97},[70,1558,746],{"class":107},[70,1560,622],{"class":76},[70,1562,636],{"class":80},[70,1564,640],{"class":639},[70,1566,643],{"class":80},[70,1568,114],{"class":107},[70,1570,1572],{"class":72,"line":1571},37,[70,1573,1089],{"class":107},[70,1575,1577],{"class":72,"line":1576},38,[70,1578,121],{"emptyLinePlaceholder":120},[70,1580,1582,1584,1586],{"class":72,"line":1581},39,[70,1583,825],{"class":76},[70,1585,828],{"class":639},[70,1587,114],{"class":107},[70,1589,1591],{"class":72,"line":1590},40,[70,1592,836],{"class":107},[16,1594,1595,1597],{},[34,1596,841],{},"（因文件内容而异）：",[61,1599,1602],{"className":1600,"code":1601,"language":848},[846],"Found 15 .md files:\n  index.md\n  ch2-前言.md\n  2000-现代C++.md\n  ...\n",[20,1603,1601],{"__ignoreMap":66},[525,1605,1607],{"id":1606},"示例-4在示例-3-基础上创建目录文件并拷贝","示例 4：在示例 3 基础上，创建目录、文件并拷贝",[61,1609,1611],{"className":63,"code":1610,"language":65,"meta":66,"style":66},"#include \u003Ciostream>\n#include \u003Cfilesystem>\n#include \u003Cfstream>\n\nnamespace fs = std::filesystem;\n\nint main()\n{\n    fs::path test_dir = fs::temp_directory_path() \u002F \"cpp_test_demo\";\n\n    \u002F\u002F 创建目录（如果已存在也不报错）\n    if (fs::create_directory(test_dir))\n    {\n        std::cout \u003C\u003C \"Created: \" \u003C\u003C test_dir \u003C\u003C \"\\n\";\n    }\n    else\n    {\n        std::cout \u003C\u003C \"Already exists: \" \u003C\u003C test_dir \u003C\u003C \"\\n\";\n    }\n\n    \u002F\u002F 创建一个文件\n    fs::path file_path = test_dir \u002F \"hello.txt\";\n    {\n        std::ofstream out(file_path);\n        out \u003C\u003C \"Hello, filesystem!\\n\";\n    }\n    std::cout \u003C\u003C \"Created file: \" \u003C\u003C file_path \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C \"File size: \" \u003C\u003C fs::file_size(file_path) \u003C\u003C \" bytes\\n\";\n\n    \u002F\u002F 拷贝文件\n    fs::path copy_path = test_dir \u002F \"hello_copy.txt\";\n    fs::copy(file_path, copy_path);\n    std::cout \u003C\u003C \"Copied to: \" \u003C\u003C copy_path \u003C\u003C \"\\n\";\n\n    \u002F\u002F 检查两个文件都存在\n    std::cout \u003C\u003C \"hello.txt exists: \" \u003C\u003C fs::exists(file_path) \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C \"hello_copy.txt exists: \" \u003C\u003C fs::exists(copy_path) \u003C\u003C \"\\n\";\n\n    \u002F\u002F 清理：删除测试目录\n    fs::remove_all(test_dir);\n    std::cout \u003C\u003C \"Cleaned up: \" \u003C\u003C test_dir \u003C\u003C \"\\n\";\n\n    return 0;\n}\n",[20,1612,1613,1619,1625,1632,1636,1652,1656,1664,1668,1693,1697,1702,1717,1721,1747,1751,1756,1760,1785,1789,1793,1798,1816,1820,1833,1849,1853,1879,1912,1916,1921,1939,1950,1976,1980,1985,2016,2048,2052,2057,2069,2095,2100,2109],{"__ignoreMap":66},[70,1614,1615,1617],{"class":72,"line":73},[70,1616,77],{"class":76},[70,1618,540],{"class":80},[70,1620,1621,1623],{"class":72,"line":117},[70,1622,77],{"class":76},[70,1624,81],{"class":80},[70,1626,1627,1629],{"class":72,"line":124},[70,1628,77],{"class":76},[70,1630,1631],{"class":80}," \u003Cfstream>\n",[70,1633,1634],{"class":72,"line":146},[70,1635,121],{"emptyLinePlaceholder":120},[70,1637,1638,1640,1642,1644,1646,1648,1650],{"class":72,"line":151},[70,1639,94],{"class":76},[70,1641,98],{"class":97},[70,1643,101],{"class":76},[70,1645,104],{"class":97},[70,1647,108],{"class":107},[70,1649,111],{"class":97},[70,1651,114],{"class":107},[70,1653,1654],{"class":72,"line":157},[70,1655,121],{"emptyLinePlaceholder":120},[70,1657,1658,1660,1662],{"class":72,"line":173},[70,1659,575],{"class":76},[70,1661,578],{"class":97},[70,1663,581],{"class":107},[70,1665,1666],{"class":72,"line":188},[70,1667,586],{"class":107},[70,1669,1670,1672,1675,1677,1679,1681,1684,1686,1688,1691],{"class":72,"line":203},[70,1671,596],{"class":97},[70,1673,1674],{"class":107},"::path test_dir ",[70,1676,133],{"class":76},[70,1678,98],{"class":97},[70,1680,108],{"class":107},[70,1682,1683],{"class":97},"temp_directory_path",[70,1685,746],{"class":107},[70,1687,519],{"class":76},[70,1689,1690],{"class":80}," \"cpp_test_demo\"",[70,1692,114],{"class":107},[70,1694,1695],{"class":72,"line":218},[70,1696,121],{"emptyLinePlaceholder":120},[70,1698,1699],{"class":72,"line":223},[70,1700,1701],{"class":142},"    \u002F\u002F 创建目录（如果已存在也不报错）\n",[70,1703,1704,1706,1708,1710,1712,1714],{"class":72,"line":229},[70,1705,1394],{"class":76},[70,1707,314],{"class":107},[70,1709,127],{"class":97},[70,1711,108],{"class":107},[70,1713,236],{"class":97},[70,1715,1716],{"class":107},"(test_dir))\n",[70,1718,1719],{"class":72,"line":244},[70,1720,1008],{"class":107},[70,1722,1723,1725,1727,1729,1732,1734,1737,1739,1741,1743,1745],{"class":72,"line":260},[70,1724,1013],{"class":97},[70,1726,619],{"class":107},[70,1728,622],{"class":76},[70,1730,1731],{"class":80}," \"Created: \"",[70,1733,628],{"class":76},[70,1735,1736],{"class":107}," test_dir ",[70,1738,622],{"class":76},[70,1740,636],{"class":80},[70,1742,640],{"class":639},[70,1744,643],{"class":80},[70,1746,114],{"class":107},[70,1748,1749],{"class":72,"line":275},[70,1750,1089],{"class":107},[70,1752,1753],{"class":72,"line":297},[70,1754,1755],{"class":76},"    else\n",[70,1757,1758],{"class":72,"line":302},[70,1759,1008],{"class":107},[70,1761,1762,1764,1766,1768,1771,1773,1775,1777,1779,1781,1783],{"class":72,"line":308},[70,1763,1013],{"class":97},[70,1765,619],{"class":107},[70,1767,622],{"class":76},[70,1769,1770],{"class":80}," \"Already exists: \"",[70,1772,628],{"class":76},[70,1774,1736],{"class":107},[70,1776,622],{"class":76},[70,1778,636],{"class":80},[70,1780,640],{"class":639},[70,1782,643],{"class":80},[70,1784,114],{"class":107},[70,1786,1787],{"class":72,"line":339},[70,1788,1089],{"class":107},[70,1790,1791],{"class":72,"line":833},[70,1792,121],{"emptyLinePlaceholder":120},[70,1794,1795],{"class":72,"line":1104},[70,1796,1797],{"class":142},"    \u002F\u002F 创建一个文件\n",[70,1799,1800,1802,1805,1807,1809,1811,1814],{"class":72,"line":1357},[70,1801,596],{"class":97},[70,1803,1804],{"class":107},"::path file_path ",[70,1806,133],{"class":76},[70,1808,1736],{"class":107},[70,1810,519],{"class":76},[70,1812,1813],{"class":80}," \"hello.txt\"",[70,1815,114],{"class":107},[70,1817,1818],{"class":72,"line":1362},[70,1819,1008],{"class":107},[70,1821,1822,1824,1827,1830],{"class":72,"line":1386},[70,1823,1013],{"class":97},[70,1825,1826],{"class":107},"::ofstream ",[70,1828,1829],{"class":97},"out",[70,1831,1832],{"class":107},"(file_path);\n",[70,1834,1835,1838,1840,1843,1845,1847],{"class":72,"line":1391},[70,1836,1837],{"class":107},"        out ",[70,1839,622],{"class":76},[70,1841,1842],{"class":80}," \"Hello, filesystem!",[70,1844,640],{"class":639},[70,1846,643],{"class":80},[70,1848,114],{"class":107},[70,1850,1851],{"class":72,"line":1410},[70,1852,1089],{"class":107},[70,1854,1855,1857,1859,1861,1864,1866,1869,1871,1873,1875,1877],{"class":72,"line":1415},[70,1856,616],{"class":97},[70,1858,619],{"class":107},[70,1860,622],{"class":76},[70,1862,1863],{"class":80}," \"Created file: \"",[70,1865,628],{"class":76},[70,1867,1868],{"class":107}," file_path ",[70,1870,622],{"class":76},[70,1872,636],{"class":80},[70,1874,640],{"class":639},[70,1876,643],{"class":80},[70,1878,114],{"class":107},[70,1880,1881,1883,1885,1887,1890,1892,1894,1896,1898,1901,1903,1906,1908,1910],{"class":72,"line":1441},[70,1882,616],{"class":97},[70,1884,619],{"class":107},[70,1886,622],{"class":76},[70,1888,1889],{"class":80}," \"File size: \"",[70,1891,628],{"class":76},[70,1893,98],{"class":97},[70,1895,108],{"class":107},[70,1897,210],{"class":97},[70,1899,1900],{"class":107},"(file_path) ",[70,1902,622],{"class":76},[70,1904,1905],{"class":80}," \" bytes",[70,1907,640],{"class":639},[70,1909,643],{"class":80},[70,1911,114],{"class":107},[70,1913,1914],{"class":72,"line":1452},[70,1915,121],{"emptyLinePlaceholder":120},[70,1917,1918],{"class":72,"line":1457},[70,1919,1920],{"class":142},"    \u002F\u002F 拷贝文件\n",[70,1922,1923,1925,1928,1930,1932,1934,1937],{"class":72,"line":1462},[70,1924,596],{"class":97},[70,1926,1927],{"class":107},"::path copy_path ",[70,1929,133],{"class":76},[70,1931,1736],{"class":107},[70,1933,519],{"class":76},[70,1935,1936],{"class":80}," \"hello_copy.txt\"",[70,1938,114],{"class":107},[70,1940,1941,1943,1945,1947],{"class":72,"line":1479},[70,1942,596],{"class":97},[70,1944,108],{"class":107},[70,1946,251],{"class":97},[70,1948,1949],{"class":107},"(file_path, copy_path);\n",[70,1951,1952,1954,1956,1958,1961,1963,1966,1968,1970,1972,1974],{"class":72,"line":1484},[70,1953,616],{"class":97},[70,1955,619],{"class":107},[70,1957,622],{"class":76},[70,1959,1960],{"class":80}," \"Copied to: \"",[70,1962,628],{"class":76},[70,1964,1965],{"class":107}," copy_path ",[70,1967,622],{"class":76},[70,1969,636],{"class":80},[70,1971,640],{"class":639},[70,1973,643],{"class":80},[70,1975,114],{"class":107},[70,1977,1978],{"class":72,"line":1517},[70,1979,121],{"emptyLinePlaceholder":120},[70,1981,1982],{"class":72,"line":1531},[70,1983,1984],{"class":142},"    \u002F\u002F 检查两个文件都存在\n",[70,1986,1987,1989,1991,1993,1996,1998,2000,2002,2004,2006,2008,2010,2012,2014],{"class":72,"line":1536},[70,1988,616],{"class":97},[70,1990,619],{"class":107},[70,1992,622],{"class":76},[70,1994,1995],{"class":80}," \"hello.txt exists: \"",[70,1997,628],{"class":76},[70,1999,98],{"class":97},[70,2001,108],{"class":107},[70,2003,164],{"class":97},[70,2005,1900],{"class":107},[70,2007,622],{"class":76},[70,2009,636],{"class":80},[70,2011,640],{"class":639},[70,2013,643],{"class":80},[70,2015,114],{"class":107},[70,2017,2018,2020,2022,2024,2027,2029,2031,2033,2035,2038,2040,2042,2044,2046],{"class":72,"line":1571},[70,2019,616],{"class":97},[70,2021,619],{"class":107},[70,2023,622],{"class":76},[70,2025,2026],{"class":80}," \"hello_copy.txt exists: \"",[70,2028,628],{"class":76},[70,2030,98],{"class":97},[70,2032,108],{"class":107},[70,2034,164],{"class":97},[70,2036,2037],{"class":107},"(copy_path) ",[70,2039,622],{"class":76},[70,2041,636],{"class":80},[70,2043,640],{"class":639},[70,2045,643],{"class":80},[70,2047,114],{"class":107},[70,2049,2050],{"class":72,"line":1576},[70,2051,121],{"emptyLinePlaceholder":120},[70,2053,2054],{"class":72,"line":1581},[70,2055,2056],{"class":142},"    \u002F\u002F 清理：删除测试目录\n",[70,2058,2059,2061,2063,2066],{"class":72,"line":1590},[70,2060,596],{"class":97},[70,2062,108],{"class":107},[70,2064,2065],{"class":97},"remove_all",[70,2067,2068],{"class":107},"(test_dir);\n",[70,2070,2072,2074,2076,2078,2081,2083,2085,2087,2089,2091,2093],{"class":72,"line":2071},41,[70,2073,616],{"class":97},[70,2075,619],{"class":107},[70,2077,622],{"class":76},[70,2079,2080],{"class":80}," \"Cleaned up: \"",[70,2082,628],{"class":76},[70,2084,1736],{"class":107},[70,2086,622],{"class":76},[70,2088,636],{"class":80},[70,2090,640],{"class":639},[70,2092,643],{"class":80},[70,2094,114],{"class":107},[70,2096,2098],{"class":72,"line":2097},42,[70,2099,121],{"emptyLinePlaceholder":120},[70,2101,2103,2105,2107],{"class":72,"line":2102},43,[70,2104,825],{"class":76},[70,2106,828],{"class":639},[70,2108,114],{"class":107},[70,2110,2112],{"class":72,"line":2111},44,[70,2113,836],{"class":107},[16,2115,2116,2118],{},[34,2117,841],{},"：",[61,2120,2123],{"className":2121,"code":2122,"language":848},[846],"Created: \"\u002Ftmp\u002Fcpp_test_demo\"\nCreated file: \"\u002Ftmp\u002Fcpp_test_demo\u002Fhello.txt\"\nFile size: 21 bytes\nCopied to: \"\u002Ftmp\u002Fcpp_test_demo\u002Fhello_copy.txt\"\nhello.txt exists: true\nhello_copy.txt exists: true\nCleaned up: \"\u002Ftmp\u002Fcpp_test_demo\"\n",[20,2124,2122],{"__ignoreMap":66},[12,2126,841],{"id":841},[16,2128,2129],{},"见上方每个示例的\"运行结果\"。",[12,2131,2132],{"id":2132},"示例中的关键语法解释",[367,2134,2135,2154],{},[370,2136,2137],{},[373,2138,2139,2142,2145,2148,2151],{},[376,2140,2141],{"align":378},"示例",[376,2143,2144],{"align":378},"讲了什么",[376,2146,2147],{"align":378},"新出现的语法",[376,2149,2150],{"align":378},"为什么这样写",[376,2152,2153],{"align":378},"注意事项",[384,2155,2156,2182,2201,2223],{},[373,2157,2158,2161,2164,2176,2179],{},[389,2159,2160],{"align":378},"示例 1",[389,2162,2163],{"align":378},"路径信息查询",[389,2165,2166,2169,2170,2169,2173],{"align":378},[20,2167,2168],{},"fs::current_path()","、",[20,2171,2172],{},"exists()",[20,2174,2175],{},"filename()",[389,2177,2178],{"align":378},"获取当前路径和各组成部分",[389,2180,2181],{"align":378},"所有路径操作都是跨平台的",[373,2183,2184,2187,2190,2195,2198],{},[389,2185,2186],{"align":378},"示例 2",[389,2188,2189],{"align":378},"遍历目录",[389,2191,2192],{"align":378},[20,2193,2194],{},"fs::directory_iterator",[389,2196,2197],{"align":378},"遍历当前目录下的所有条目",[389,2199,2200],{"align":378},"仅遍历一级，不会递归进入子目录",[373,2202,2203,2206,2209,2217,2220],{},[389,2204,2205],{"align":378},"示例 3",[389,2207,2208],{"align":378},"递归遍历和过滤",[389,2210,2211,2169,2214],{"align":378},[20,2212,2213],{},"fs::recursive_directory_iterator",[20,2215,2216],{},"extension()",[389,2218,2219],{"align":378},"递归找特定后缀的文件",[389,2221,2222],{"align":378},"递归遍历可能很慢，注意目录深度",[373,2224,2225,2228,2231,2242,2245],{},[389,2226,2227],{"align":378},"示例 4",[389,2229,2230],{"align":378},"创建、拷贝、删除",[389,2232,2233,2169,2236,2169,2239],{"align":378},[20,2234,2235],{},"create_directory()",[20,2237,2238],{},"copy()",[20,2240,2241],{},"remove_all()",[389,2243,2244],{"align":378},"常见文件操作，跨平台",[389,2246,2247,2249],{"align":378},[20,2248,2065],{}," 类似 rm -rf，小心使用",[12,2251,2253],{"id":2252},"抛异常版本-vs-error_code-版本","抛异常版本 vs error_code 版本",[16,2255,2256],{},"很多 filesystem 函数有两种用法：",[61,2258,2260],{"className":63,"code":2259,"language":65,"meta":66,"style":66},"auto size = fs::file_size(path);      \u002F\u002F 失败时抛异常\n\nstd::error_code ec;\nauto size = fs::file_size(path, ec);  \u002F\u002F 失败时不抛异常，错误写入 ec\n",[20,2261,2262,2284,2288,2295],{"__ignoreMap":66},[70,2263,2264,2267,2270,2272,2274,2276,2278,2281],{"class":72,"line":73},[70,2265,2266],{"class":76},"auto",[70,2268,2269],{"class":107}," size ",[70,2271,133],{"class":76},[70,2273,98],{"class":97},[70,2275,108],{"class":107},[70,2277,210],{"class":97},[70,2279,2280],{"class":107},"(path);",[70,2282,2283],{"class":142},"      \u002F\u002F 失败时抛异常\n",[70,2285,2286],{"class":72,"line":117},[70,2287,121],{"emptyLinePlaceholder":120},[70,2289,2290,2292],{"class":72,"line":124},[70,2291,1179],{"class":97},[70,2293,2294],{"class":107},"::error_code ec;\n",[70,2296,2297,2299,2301,2303,2305,2307,2309,2312],{"class":72,"line":146},[70,2298,2266],{"class":76},[70,2300,2269],{"class":107},[70,2302,133],{"class":76},[70,2304,98],{"class":97},[70,2306,108],{"class":107},[70,2308,210],{"class":97},[70,2310,2311],{"class":107},"(path, ec);",[70,2313,2314],{"class":142},"  \u002F\u002F 失败时不抛异常，错误写入 ec\n",[367,2316,2317,2330],{},[370,2318,2319],{},[373,2320,2321,2324,2327],{},[376,2322,2323],{"align":378},"写法",[376,2325,2326],{"align":378},"优点",[376,2328,2329],{"align":378},"适合场景",[384,2331,2332,2343],{},[373,2333,2334,2337,2340],{},[389,2335,2336],{"align":378},"抛异常版本",[389,2338,2339],{"align":378},"代码短，失败自动中断",[389,2341,2342],{"align":378},"文件理应存在，失败就是异常",[373,2344,2345,2351,2354],{},[389,2346,2347,2350],{"align":378},[20,2348,2349],{},"error_code"," 版本",[389,2352,2353],{"align":378},"不抛异常，便于继续处理",[389,2355,2356],{"align":378},"扫描大量文件、权限不确定、允许跳过失败项",[525,2358,2360],{"id":2359},"示例-5扫描目录时用-error_code-跳过失败项","示例 5：扫描目录时用 error_code 跳过失败项",[61,2362,2364],{"className":63,"code":2363,"language":65,"meta":66,"style":66},"#include \u003Cfilesystem>\n#include \u003Ciostream>\n#include \u003Csystem_error>\n\n\u002F\u002F filesystem 用来跨平台处理路径、文件和目录。\nnamespace fs = std::filesystem;\n\nint main()\n{\n    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n    fs::path dir = fs::current_path();\n\n    for (const auto& entry : fs::directory_iterator(dir))\n    {\n        std::error_code ec;\n        auto size = fs::file_size(entry.path(), ec);\n\n        if (ec)\n        {\n            std::cout \u003C\u003C \"[skip] \" \u003C\u003C entry.path().filename().string()\n                      \u003C\u003C \" reason: \" \u003C\u003C ec.message() \u003C\u003C \"\\n\";\n            continue;\n        }\n\n        std::cout \u003C\u003C entry.path().filename().string()\n                  \u003C\u003C \" size = \" \u003C\u003C size \u003C\u003C \"\\n\";\n    }\n\n    return 0;\n}\n",[20,2365,2366,2372,2378,2385,2389,2394,2410,2414,2422,2426,2431,2447,2451,2471,2475,2481,2503,2507,2514,2518,2546,2574,2581,2585,2589,2611,2633,2637,2641,2649],{"__ignoreMap":66},[70,2367,2368,2370],{"class":72,"line":73},[70,2369,77],{"class":76},[70,2371,81],{"class":80},[70,2373,2374,2376],{"class":72,"line":117},[70,2375,77],{"class":76},[70,2377,540],{"class":80},[70,2379,2380,2382],{"class":72,"line":124},[70,2381,77],{"class":76},[70,2383,2384],{"class":80}," \u003Csystem_error>\n",[70,2386,2387],{"class":72,"line":146},[70,2388,121],{"emptyLinePlaceholder":120},[70,2390,2391],{"class":72,"line":151},[70,2392,2393],{"class":142},"\u002F\u002F filesystem 用来跨平台处理路径、文件和目录。\n",[70,2395,2396,2398,2400,2402,2404,2406,2408],{"class":72,"line":157},[70,2397,94],{"class":76},[70,2399,98],{"class":97},[70,2401,101],{"class":76},[70,2403,104],{"class":97},[70,2405,108],{"class":107},[70,2407,111],{"class":97},[70,2409,114],{"class":107},[70,2411,2412],{"class":72,"line":173},[70,2413,121],{"emptyLinePlaceholder":120},[70,2415,2416,2418,2420],{"class":72,"line":188},[70,2417,575],{"class":76},[70,2419,578],{"class":97},[70,2421,581],{"class":107},[70,2423,2424],{"class":72,"line":203},[70,2425,586],{"class":107},[70,2427,2428],{"class":72,"line":218},[70,2429,2430],{"class":142},"    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n",[70,2432,2433,2435,2437,2439,2441,2443,2445],{"class":72,"line":223},[70,2434,596],{"class":97},[70,2436,914],{"class":107},[70,2438,133],{"class":76},[70,2440,98],{"class":97},[70,2442,108],{"class":107},[70,2444,608],{"class":97},[70,2446,611],{"class":107},[70,2448,2449],{"class":72,"line":229},[70,2450,121],{"emptyLinePlaceholder":120},[70,2452,2453,2455,2457,2459,2461,2463,2465,2467,2469],{"class":72,"line":244},[70,2454,986],{"class":76},[70,2456,314],{"class":107},[70,2458,317],{"class":76},[70,2460,320],{"class":76},[70,2462,323],{"class":107},[70,2464,127],{"class":97},[70,2466,108],{"class":107},[70,2468,330],{"class":97},[70,2470,1003],{"class":107},[70,2472,2473],{"class":72,"line":260},[70,2474,1008],{"class":107},[70,2476,2477,2479],{"class":72,"line":275},[70,2478,1013],{"class":97},[70,2480,2294],{"class":107},[70,2482,2483,2486,2488,2490,2492,2494,2496,2498,2500],{"class":72,"line":297},[70,2484,2485],{"class":76},"        auto",[70,2487,2269],{"class":107},[70,2489,133],{"class":76},[70,2491,98],{"class":97},[70,2493,108],{"class":107},[70,2495,210],{"class":97},[70,2497,1318],{"class":107},[70,2499,1062],{"class":97},[70,2501,2502],{"class":107},"(), ec);\n",[70,2504,2505],{"class":72,"line":302},[70,2506,121],{"emptyLinePlaceholder":120},[70,2508,2509,2511],{"class":72,"line":308},[70,2510,1273],{"class":76},[70,2512,2513],{"class":107}," (ec)\n",[70,2515,2516],{"class":72,"line":339},[70,2517,1307],{"class":107},[70,2519,2520,2523,2525,2527,2530,2532,2534,2536,2538,2540,2542,2544],{"class":72,"line":833},[70,2521,2522],{"class":97},"            std",[70,2524,619],{"class":107},[70,2526,622],{"class":76},[70,2528,2529],{"class":80}," \"[skip] \"",[70,2531,628],{"class":76},[70,2533,1021],{"class":107},[70,2535,1062],{"class":97},[70,2537,1065],{"class":107},[70,2539,743],{"class":97},[70,2541,1065],{"class":107},[70,2543,1072],{"class":97},[70,2545,581],{"class":107},[70,2547,2548,2551,2554,2556,2559,2562,2564,2566,2568,2570,2572],{"class":72,"line":1104},[70,2549,2550],{"class":76},"                      \u003C\u003C",[70,2552,2553],{"class":80}," \" reason: \"",[70,2555,628],{"class":76},[70,2557,2558],{"class":107}," ec.",[70,2560,2561],{"class":97},"message",[70,2563,746],{"class":107},[70,2565,622],{"class":76},[70,2567,636],{"class":80},[70,2569,640],{"class":639},[70,2571,643],{"class":80},[70,2573,114],{"class":107},[70,2575,2576,2579],{"class":72,"line":1357},[70,2577,2578],{"class":76},"            continue",[70,2580,114],{"class":107},[70,2582,2583],{"class":72,"line":1362},[70,2584,1328],{"class":107},[70,2586,2587],{"class":72,"line":1386},[70,2588,121],{"emptyLinePlaceholder":120},[70,2590,2591,2593,2595,2597,2599,2601,2603,2605,2607,2609],{"class":72,"line":1391},[70,2592,1013],{"class":97},[70,2594,619],{"class":107},[70,2596,622],{"class":76},[70,2598,1021],{"class":107},[70,2600,1062],{"class":97},[70,2602,1065],{"class":107},[70,2604,743],{"class":97},[70,2606,1065],{"class":107},[70,2608,1072],{"class":97},[70,2610,581],{"class":107},[70,2612,2613,2616,2619,2621,2623,2625,2627,2629,2631],{"class":72,"line":1410},[70,2614,2615],{"class":76},"                  \u003C\u003C",[70,2617,2618],{"class":80}," \" size = \"",[70,2620,628],{"class":76},[70,2622,2269],{"class":107},[70,2624,622],{"class":76},[70,2626,636],{"class":80},[70,2628,640],{"class":639},[70,2630,643],{"class":80},[70,2632,114],{"class":107},[70,2634,2635],{"class":72,"line":1415},[70,2636,1089],{"class":107},[70,2638,2639],{"class":72,"line":1441},[70,2640,121],{"emptyLinePlaceholder":120},[70,2642,2643,2645,2647],{"class":72,"line":1452},[70,2644,825],{"class":76},[70,2646,828],{"class":639},[70,2648,114],{"class":107},[70,2650,2651],{"class":72,"line":1457},[70,2652,836],{"class":107},[16,2654,2655,1111],{},[34,2656,841],{},[61,2658,2661],{"className":2659,"code":2660,"language":848},[846],"[skip] content reason: Is a directory\npackage.json size = 1234\nREADME.md size = 2048\n",[20,2662,2660],{"__ignoreMap":66},[16,2664,2665,2666,2668],{},"扫描目录时，遇到目录、权限不足、符号链接异常都很常见。用 ",[20,2667,2349],{}," 可以让程序跳过坏项继续跑，而不是第一个失败就退出。",[12,2670,2671],{"id":2671},"常见错误",[16,2673,2674],{},[34,2675,2676],{},"错误 1：忘记检查 exists 就直接操作",[61,2678,2680],{"className":63,"code":2679,"language":65,"meta":66,"style":66},"std::cout \u003C\u003C fs::file_size(\"\u002Fnonexistent\");  \u002F\u002F ❌ 抛异常！\n",[20,2681,2682],{"__ignoreMap":66},[70,2683,2684,2686,2688,2690,2692,2694,2696,2698,2701,2703],{"class":72,"line":73},[70,2685,1179],{"class":97},[70,2687,619],{"class":107},[70,2689,622],{"class":76},[70,2691,98],{"class":97},[70,2693,108],{"class":107},[70,2695,210],{"class":97},[70,2697,1202],{"class":107},[70,2699,2700],{"class":80},"\"\u002Fnonexistent\"",[70,2702,291],{"class":107},[70,2704,2705],{"class":142},"  \u002F\u002F ❌ 抛异常！\n",[16,2707,2708,2709,2711],{},"正确做法：先 ",[20,2710,2172],{}," 检查，或使用 try-catch。",[16,2713,2714],{},[34,2715,2716,2717,2719,2720,2723],{},"错误 2：",[20,2718,236],{}," 和 ",[20,2721,2722],{},"create_directories"," 混淆",[61,2725,2727],{"className":63,"code":2726,"language":65,"meta":66,"style":66},"fs::create_directory(\"a\u002Fb\u002Fc\");  \u002F\u002F ❌ 如果 a\u002Fb 不存在则失败！\n",[20,2728,2729],{"__ignoreMap":66},[70,2730,2731,2733,2735,2737,2739,2742,2744],{"class":72,"line":73},[70,2732,127],{"class":97},[70,2734,108],{"class":107},[70,2736,236],{"class":97},[70,2738,1202],{"class":107},[70,2740,2741],{"class":80},"\"a\u002Fb\u002Fc\"",[70,2743,291],{"class":107},[70,2745,2746],{"class":142},"  \u002F\u002F ❌ 如果 a\u002Fb 不存在则失败！\n",[16,2748,2749,2750,2753],{},"正确做法：",[20,2751,2752],{},"fs::create_directories(\"a\u002Fb\u002Fc\");"," 会递归创建。",[16,2755,2756],{},[34,2757,2758,2759,2761],{},"错误 3：用 ",[20,2760,1297],{}," 比较路径",[61,2763,2765],{"className":63,"code":2764,"language":65,"meta":66,"style":66},"if (path1 == path2)  \u002F\u002F 只是字符串比较！\n",[20,2766,2767],{"__ignoreMap":66},[70,2768,2769,2772,2775,2777,2780],{"class":72,"line":73},[70,2770,2771],{"class":76},"if",[70,2773,2774],{"class":107}," (path1 ",[70,2776,1297],{"class":76},[70,2778,2779],{"class":107}," path2)",[70,2781,2782],{"class":142},"  \u002F\u002F 只是字符串比较！\n",[16,2784,2785,2786,2719,2789,2792,2793,2796],{},"路径 ",[20,2787,2788],{},"\u002Fhome\u002Fuser",[20,2790,2791],{},"\u002Fhome\u002Fuser\u002F"," 可能不相等，用 ",[20,2794,2795],{},"fs::equivalent(p1, p2)"," 做规范比较。",[16,2798,2799],{},[34,2800,2801,2802,2805],{},"错误 4：链接时需要 ",[20,2803,2804],{},"-lstdc++fs","（旧编译器）",[16,2807,2808,2809,2812,2813,2816],{},"在 GCC 8 及以前，需要链接 ",[20,2810,2811],{},"stdc++fs"," 库：",[20,2814,2815],{},"g++ -std=c++17 file.cpp -lstdc++fs","。GCC 9+ 和 Clang 不需要。",[12,2818,2819],{"id":2819},"使用建议",[2821,2822,2823,2834,2846,2854,2863,2869],"ol",{},[2824,2825,2826,2833],"li",{},[34,2827,2828,2829,2832],{},"用 ",[20,2830,2831],{},"namespace fs = std::filesystem;"," 简化代码","：这个缩写几乎是社区标准。",[2824,2835,2836,2118,2842,2845],{},[34,2837,2838,2839,2841],{},"路径用 ",[20,2840,519],{}," 运算符拼接",[20,2843,2844],{},"auto p = base \u002F \"subdir\" \u002F \"file.txt\";","，简洁且跨平台。",[2824,2847,2848,2853],{},[34,2849,2850,2851],{},"遍历大目录用 ",[20,2852,330],{},"：避免一次性加载所有文件。",[2824,2855,2856,2859,2860,49],{},[34,2857,2858],{},"文件操作注意异常安全","：很多 filesystem 函数在失败时会抛 ",[20,2861,2862],{},"fs::filesystem_error",[2824,2864,2865,2868],{},[34,2866,2867],{},"C++17 的 filesystem 基本够用","：C++20\u002F23 增加了一些便利函数但核心不变。",[2824,2870,2871,2874],{},[34,2872,2873],{},"扫描大量文件时考虑 error_code 重载","：避免一个异常路径中断整个扫描。",[12,2876,2877],{"id":2877},"小结",[2879,2880,2881,2886,2903,2917,2925],"ul",{},[2824,2882,2883,2885],{},[20,2884,5],{}," 提供跨平台的文件系统操作。",[2824,2887,2888,2891,2892,2894,2895,519,2897,519,2899,2902],{},[20,2889,2890],{},"fs::path"," 是路径类，支持 ",[20,2893,519],{}," 拼接、拆分（",[20,2896,2175],{},[20,2898,2216],{},[20,2900,2901],{},"parent_path()","）。",[2824,2904,2905,2907,2908,2910,2911,519,2913,2916],{},[20,2906,2172],{}," 检查存在，",[20,2909,2235],{}," 创建目录，",[20,2912,2238],{},[20,2914,2915],{},"remove()"," 等操作文件。",[2824,2918,2919,2921,2922,2924],{},[20,2920,330],{}," 遍历目录，",[20,2923,356],{}," 递归遍历。",[2824,2926,2927,2928,2930],{},"操作前检查 ",[20,2929,2172],{},"，注意异常处理。",[2932,2933,2934],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":66,"searchDepth":117,"depth":117,"links":2936},[2937,2938,2939,2940,2941,2942,2943,2949,2950,2951,2954,2955,2956],{"id":14,"depth":117,"text":14},{"id":40,"depth":117,"text":40},{"id":52,"depth":117,"text":53},{"id":59,"depth":117,"text":59},{"id":84,"depth":117,"text":84},{"id":365,"depth":117,"text":365},{"id":523,"depth":117,"text":523,"children":2944},[2945,2946,2947,2948],{"id":527,"depth":124,"text":528},{"id":853,"depth":124,"text":854},{"id":1120,"depth":124,"text":1121},{"id":1606,"depth":124,"text":1607},{"id":841,"depth":117,"text":841},{"id":2132,"depth":117,"text":2132},{"id":2252,"depth":117,"text":2253,"children":2952},[2953],{"id":2359,"depth":124,"text":2360},{"id":2671,"depth":117,"text":2671},{"id":2819,"depth":117,"text":2819},{"id":2877,"depth":117,"text":2877},"2000-2000","2023-10-05","2023-10-05-cplusplus-jiao-xue","\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md",false,{},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2000-std-filesystem",{"title":5,"description":66},"wiki\u002F2023-10-05-Cplusplus教学\u002F2000-2000-std-filesystem","vUsqVasy5doCuOa5rQGSqrZhURIY_0_z3wkmWGj9Od8",[2970,2977,2983,2989,2995,3001,3007,3013,3019,3025,3031,3037,3043,3049,3055,3061,3067,3073,3079,3085,3091,3097,3103,3109,3115,3121,3127,3133,3139,3145,3151,3157,3163,3169,3175,3181,3187,3193,3199,3205,3210,3216,3222,3228,3234,3240,3246,3252,3258,3264,3270,3276,3282,3288,3294,3300,3306,3312,3318,3324,3330,3336,3342,3348,3354,3360,3366,3372,3378,3384,3386,3392,3398,3404,3410,3416,3422,3428,3434,3440,3446,3452,3458,3464,3470,3476,3482,3488,3494,3500,3506,3512],{"path":2971,"stem":2972,"title":2973,"authors":2974,"date":2958,"chapterOrder":2975,"chapterDepth":2976,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0100-c-kai-fa-huan-jing-da-jian-yu-ce-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F0100-C++开发环境搭建与测试","C++开发环境搭建与测试",[7],"0100",0,{"path":2978,"stem":2979,"title":2980,"authors":2981,"date":2958,"chapterOrder":2982,"chapterDepth":2976,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0200-c-ji-chu-chu-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F0200-C++基础初识","C++基础初识",[7],"0200",{"path":2984,"stem":2985,"title":2986,"authors":2987,"date":2958,"chapterOrder":2988,"chapterDepth":2976,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0300-shu-ju-lei-xing-yu-shu-ju-cun-fang","wiki\u002F2023-10-05-Cplusplus教学\u002F0300-数据类型与数据存放","数据类型与数据存放",[7],"0300",{"path":2990,"stem":2991,"title":2992,"authors":2993,"date":2958,"chapterOrder":2994,"chapterDepth":2976,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0400-shu-ru-shu-chu","wiki\u002F2023-10-05-Cplusplus教学\u002F0400-输入输出","输入输出",[7],"0400",{"path":2996,"stem":2997,"title":2998,"authors":2999,"date":2958,"chapterOrder":3000,"chapterDepth":2976,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0500-yun-suan-fu","wiki\u002F2023-10-05-Cplusplus教学\u002F0500-运算符","运算符",[7],"0500",{"path":3002,"stem":3003,"title":3004,"authors":3005,"date":2958,"chapterOrder":3006,"chapterDepth":2976,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0600-cheng-xu-liu-cheng-jie-gou","wiki\u002F2023-10-05-Cplusplus教学\u002F0600-程序流程结构","程序流程结构",[7],"0600",{"path":3008,"stem":3009,"title":3010,"authors":3011,"date":2958,"chapterOrder":3012,"chapterDepth":2976,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0700-shu-zu","wiki\u002F2023-10-05-Cplusplus教学\u002F0700-数组","数组",[7],"0700",{"path":3014,"stem":3015,"title":3016,"authors":3017,"date":2958,"chapterOrder":3018,"chapterDepth":2976,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0800-han-shu-yu-tou-wen-jian","wiki\u002F2023-10-05-Cplusplus教学\u002F0800-函数与头文件","函数与头文件",[7],"0800",{"path":3020,"stem":3021,"title":3022,"authors":3023,"date":2958,"chapterOrder":3024,"chapterDepth":2976,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0900-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F0900-指针","指针",[7],"0900",{"path":3026,"stem":3027,"title":3028,"authors":3029,"date":2958,"chapterOrder":3030,"chapterDepth":2976,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1000-jie-gou-ti-yu-gong-yong-ti","wiki\u002F2023-10-05-Cplusplus教学\u002F1000-结构体与共用体","结构体与共用体",[7],"1000",{"path":3032,"stem":3033,"title":3034,"authors":3035,"date":2958,"chapterOrder":3036,"chapterDepth":2976,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1100-nei-cun-fen-qu-yu-sheng-ming-zhou-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1100-内存分区与生命周期","内存分区与生命周期",[7],"1100",{"path":3038,"stem":3039,"title":3040,"authors":3041,"date":2958,"chapterOrder":3042,"chapterDepth":2976,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1200-yin-yong","wiki\u002F2023-10-05-Cplusplus教学\u002F1200-引用","引用",[7],"1200",{"path":3044,"stem":3045,"title":3046,"authors":3047,"date":2958,"chapterOrder":3048,"chapterDepth":2976,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1300-han-shu-ti-gao","wiki\u002F2023-10-05-Cplusplus教学\u002F1300-函数提高","函数提高",[7],"1300",{"path":3050,"stem":3051,"title":3052,"authors":3053,"date":2958,"chapterOrder":3054,"chapterDepth":2976,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1350-ming-ming-kong-jian","wiki\u002F2023-10-05-Cplusplus教学\u002F1350-命名空间","命名空间",[7],"1350",{"path":3056,"stem":3057,"title":3058,"authors":3059,"date":2958,"chapterOrder":3060,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0100-feng-zhuang","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0100-封装","封装",[7],"1400-0100",{"path":3062,"stem":3063,"title":3064,"authors":3065,"date":2958,"chapterOrder":3066,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0200-dui-xiang-chu-shi-hua-he-qing-li","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0200-对象初始化和清理","对象初始化和清理",[7],"1400-0200",{"path":3068,"stem":3069,"title":3070,"authors":3071,"date":2958,"chapterOrder":3072,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0300-dui-xiang-mo-xing-yu-this-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0300-对象模型与this指针","对象模型与this指针",[7],"1400-0300",{"path":3074,"stem":3075,"title":3076,"authors":3077,"date":2958,"chapterOrder":3078,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0400-you-yuan-yu-yun-suan-fu-zhong-zai","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0400-友元与运算符重载","友元与运算符重载",[7],"1400-0400",{"path":3080,"stem":3081,"title":3082,"authors":3083,"date":2958,"chapterOrder":3084,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0500-ji-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0500-继承","继承",[7],"1400-0500",{"path":3086,"stem":3087,"title":3088,"authors":3089,"date":2958,"chapterOrder":3090,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0600-多态","多态",[7],"1400-0600",{"path":3092,"stem":3093,"title":3094,"authors":3095,"date":2958,"chapterOrder":3096,"chapterDepth":2976,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-lei-he-dui-xiang","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-类和对象","类和对象",[7],"1400",{"path":3098,"stem":3099,"title":3100,"authors":3101,"date":2958,"chapterOrder":3102,"chapterDepth":2976,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1450-han-shu-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F1450-函数指针","函数指针",[7],"1450",{"path":3104,"stem":3105,"title":3106,"authors":3107,"date":2958,"chapterOrder":3108,"chapterDepth":2976,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1500-wen-jian-cao-zuo","wiki\u002F2023-10-05-Cplusplus教学\u002F1500-文件操作","文件操作",[7],"1500",{"path":3110,"stem":3111,"title":3112,"authors":3113,"date":2958,"chapterOrder":3114,"chapterDepth":2976,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1600-yi-chang-chu-li-yu-cuo-wu-ma","wiki\u002F2023-10-05-Cplusplus教学\u002F1600-异常处理与错误码","异常处理",[7],"1600",{"path":3116,"stem":3117,"title":3118,"authors":3119,"date":2958,"chapterOrder":3120,"chapterDepth":2976,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","wiki\u002F2023-10-05-Cplusplus教学\u002F1700-模板","模板",[7],"1700",{"path":3122,"stem":3123,"title":3124,"authors":3125,"date":2958,"chapterOrder":3126,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0100-stl-chu-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0100-STL初识","STL初识",[7],"1800-0100",{"path":3128,"stem":3129,"title":3130,"authors":3131,"date":2958,"chapterOrder":3132,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0200-std-array","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0200-std-array","std::array",[7],"1800-0200",{"path":3134,"stem":3135,"title":3136,"authors":3137,"date":2958,"chapterOrder":3138,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0300-string-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0300-string容器","string容器",[7],"1800-0300",{"path":3140,"stem":3141,"title":3142,"authors":3143,"date":2958,"chapterOrder":3144,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0400-vector-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0400-vector容器","vector 容器",[7],"1800-0400",{"path":3146,"stem":3147,"title":3148,"authors":3149,"date":2958,"chapterOrder":3150,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0500-deque-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0500-deque容器","deque 容器",[7],"1800-0500",{"path":3152,"stem":3153,"title":3154,"authors":3155,"date":2958,"chapterOrder":3156,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0600-stack-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0600-stack容器","stack 容器",[7],"1800-0600",{"path":3158,"stem":3159,"title":3160,"authors":3161,"date":2958,"chapterOrder":3162,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0700-queue-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0700-queue容器","queue 容器",[7],"1800-0700",{"path":3164,"stem":3165,"title":3166,"authors":3167,"date":2958,"chapterOrder":3168,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0800-list-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0800-list容器","list 容器",[7],"1800-0800",{"path":3170,"stem":3171,"title":3172,"authors":3173,"date":2958,"chapterOrder":3174,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0900-set-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0900-set容器","set \u002F multiset 容器",[7],"1800-0900",{"path":3176,"stem":3177,"title":3178,"authors":3179,"date":2958,"chapterOrder":3180,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1000-map-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-1000-map容器","map \u002F multimap 容器",[7],"1800-1000",{"path":3182,"stem":3183,"title":3184,"authors":3185,"date":2958,"chapterOrder":3186,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1100-han-shu-dui-xiang-yu-wei-ci","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-1100-函数对象与谓词","函数对象与谓词",[7],"1800-1100",{"path":3188,"stem":3189,"title":3190,"authors":3191,"date":2958,"chapterOrder":3192,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1200-chang-yong-suan-fa","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-1200-常用算法","常用算法",[7],"1800-1200",{"path":3194,"stem":3195,"title":3196,"authors":3197,"date":2958,"chapterOrder":3198,"chapterDepth":2976,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-stl-ti-gao-bian-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-STL提高编程","STL提高编程",[7],"1800",{"path":3200,"stem":3201,"title":3202,"authors":3203,"date":2958,"chapterOrder":3204,"chapterDepth":2976,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1900-c-lei-xing-zhuan-huan","wiki\u002F2023-10-05-Cplusplus教学\u002F1900-C++类型转换","C++类型转换",[7],"1900",{"path":3206,"stem":3207,"title":2266,"authors":3208,"date":2958,"chapterOrder":3209,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0100-auto","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0100-auto",[7],"2000-0100",{"path":3211,"stem":3212,"title":3213,"authors":3214,"date":2958,"chapterOrder":3215,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0200-nullptr","nullptr",[7],"2000-0200",{"path":3217,"stem":3218,"title":3219,"authors":3220,"date":2958,"chapterOrder":3221,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0300-using","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0300-using","using",[7],"2000-0300",{"path":3223,"stem":3224,"title":3225,"authors":3226,"date":2958,"chapterOrder":3227,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0400-enum-class","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0400-enum-class","enum class",[7],"2000-0400",{"path":3229,"stem":3230,"title":3231,"authors":3232,"date":2958,"chapterOrder":3233,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0500-fan-wei-for-xun-huan","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0500-范围for循环","范围 for 循环",[7],"2000-0500",{"path":3235,"stem":3236,"title":3237,"authors":3238,"date":2958,"chapterOrder":3239,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0600-jie-gou-hua-bang-ding","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0600-结构化绑定","结构化绑定",[7],"2000-0600",{"path":3241,"stem":3242,"title":3243,"authors":3244,"date":2958,"chapterOrder":3245,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0700-constexpr","constexpr",[7],"2000-0700",{"path":3247,"stem":3248,"title":3249,"authors":3250,"date":2958,"chapterOrder":3251,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0800-raii","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0800-RAII","RAII",[7],"2000-0800",{"path":3253,"stem":3254,"title":3255,"authors":3256,"date":2958,"chapterOrder":3257,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0900-zhi-neng-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0900-智能指针","智能指针",[7],"2000-0900",{"path":3259,"stem":3260,"title":3261,"authors":3262,"date":2958,"chapterOrder":3263,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1000-you-zhi-yin-yong-he-yi-dong-yu-yi","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1000-右值引用和移动语义","右值引用和移动语义",[7],"2000-1000",{"path":3265,"stem":3266,"title":3267,"authors":3268,"date":2958,"chapterOrder":3269,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1100-lambda-biao-da-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1100-Lambda表达式","Lambda 表达式",[7],"2000-1100",{"path":3271,"stem":3272,"title":3273,"authors":3274,"date":2958,"chapterOrder":3275,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1200-std-function","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1200-std-function","std::function",[7],"2000-1200",{"path":3277,"stem":3278,"title":3279,"authors":3280,"date":2958,"chapterOrder":3281,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1300-std-bind","std::bind",[7],"2000-1300",{"path":3283,"stem":3284,"title":3285,"authors":3286,"date":2958,"chapterOrder":3287,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1400-std-optional","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1400-std-optional","std::optional",[7],"2000-1400",{"path":3289,"stem":3290,"title":3291,"authors":3292,"date":2958,"chapterOrder":3293,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1500-std-variant","std::variant",[7],"2000-1500",{"path":3295,"stem":3296,"title":3297,"authors":3298,"date":2958,"chapterOrder":3299,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1600-std-span","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1600-std-span","std::span",[7],"2000-1600",{"path":3301,"stem":3302,"title":3303,"authors":3304,"date":2958,"chapterOrder":3305,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1700-std-format-print","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1700-std-format-print","std::format \u002F std::print",[7],"2000-1700",{"path":3307,"stem":3308,"title":3309,"authors":3310,"date":2958,"chapterOrder":3311,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1800-std-chrono","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1800-std-chrono","std::chrono",[7],"2000-1800",{"path":3313,"stem":3314,"title":3315,"authors":3316,"date":2958,"chapterOrder":3317,"chapterDepth":117,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0100-bing-fa-shi-shen-me","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0100-并发是什么","并发是什么",[7],"2000-1900-0100",{"path":3319,"stem":3320,"title":3321,"authors":3322,"date":2958,"chapterOrder":3323,"chapterDepth":117,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0200-bing-xing-shi-shen-me","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0200-并行是什么","并行是什么",[7],"2000-1900-0200",{"path":3325,"stem":3326,"title":3327,"authors":3328,"date":2958,"chapterOrder":3329,"chapterDepth":117,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0300-xie-cheng-shi-shen-me","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0300-协程是什么","协程是什么",[7],"2000-1900-0300",{"path":3331,"stem":3332,"title":3333,"authors":3334,"date":2958,"chapterOrder":3335,"chapterDepth":117,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1000-bing-fa-bian-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1000-并发编程","并发编程",[7],"2000-1900-1000",{"path":3337,"stem":3338,"title":3339,"authors":3340,"date":2958,"chapterOrder":3341,"chapterDepth":117,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1100-std-thread","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1100-std-thread","std::thread",[7],"2000-1900-1100",{"path":3343,"stem":3344,"title":3345,"authors":3346,"date":2958,"chapterOrder":3347,"chapterDepth":117,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1200-mutex-lock-guard","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1200-mutex-lock-guard","mutex 与 RAII 锁",[7],"2000-1900-1200",{"path":3349,"stem":3350,"title":3351,"authors":3352,"date":2958,"chapterOrder":3353,"chapterDepth":117,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1300-std-atomic","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1300-std-atomic","std::atomic",[7],"2000-1900-1300",{"path":3355,"stem":3356,"title":3357,"authors":3358,"date":2958,"chapterOrder":3359,"chapterDepth":117,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1400-condition-variable","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1400-condition-variable","condition_variable",[7],"2000-1900-1400",{"path":3361,"stem":3362,"title":3363,"authors":3364,"date":2958,"chapterOrder":3365,"chapterDepth":117,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1500-future-async-promise","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1500-future-async-promise","future、async、promise 与 packaged_task",[7],"2000-1900-1500",{"path":3367,"stem":3368,"title":3369,"authors":3370,"date":2958,"chapterOrder":3371,"chapterDepth":117,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1600-jthread-stop-token","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1600-jthread-stop-token","jthread 与 stop_token",[7],"2000-1900-1600",{"path":3373,"stem":3374,"title":3375,"authors":3376,"date":2958,"chapterOrder":3377,"chapterDepth":117,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1700-semaphore-latch-barrier","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1700-semaphore-latch-barrier","semaphore、latch 与 barrier",[7],"2000-1900-1700",{"path":3379,"stem":3380,"title":3381,"authors":3382,"date":2958,"chapterOrder":3383,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-bing-fa-bing-xing-yu-xie-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-并发并行与协程","并发、并行与协程",[7],"2000-1900",{"path":2965,"stem":2967,"title":5,"authors":3385,"date":2958,"chapterOrder":2957,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},[7],{"path":3387,"stem":3388,"title":3389,"authors":3390,"date":2958,"chapterOrder":3391,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-2100-modules简介","modules 简介",[7],"2000-2100",{"path":3393,"stem":3394,"title":3395,"authors":3396,"date":2958,"chapterOrder":3397,"chapterDepth":2976,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-xian-dai-c","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-现代C++","现代C++",[7],"2000",{"path":3399,"stem":3400,"title":3401,"authors":3402,"date":2958,"chapterOrder":3403,"chapterDepth":117,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0100-ding-shi-qi-yu-yi-bu-io","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0100-定时器与异步IO","定时器与异步 IO",[7],"2100-0100-0100",{"path":3405,"stem":3406,"title":3407,"authors":3408,"date":2958,"chapterOrder":3409,"chapterDepth":117,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0200-boost-asio-ji-chu","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0200-Boost.Asio基础","Boost.Asio 基础",[7],"2100-0100-0200",{"path":3411,"stem":3412,"title":3413,"authors":3414,"date":2958,"chapterOrder":3415,"chapterDepth":117,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0300-chuan-kou-tong-xin","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0300-串口通信","串口通信教学",[7],"2100-0100-0300",{"path":3417,"stem":3418,"title":3419,"authors":3420,"date":2958,"chapterOrder":3421,"chapterDepth":117,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0350-chuan-kou-tong-xin-chuan-kou-bao-xie-yi-shi-li","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0350-串口通信串口包协议实例","串口通信串口包协议实例",[7],"2100-0100-0350",{"path":3423,"stem":3424,"title":3425,"authors":3426,"date":2958,"chapterOrder":3427,"chapterDepth":117,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0400-tcp-tong-xin","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0400-TCP通信","TCP 通信",[7],"2100-0100-0400",{"path":3429,"stem":3430,"title":3431,"authors":3432,"date":2958,"chapterOrder":3433,"chapterDepth":117,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0500-udp-tong-xin","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0500-UDP通信","UDP 通信",[7],"2100-0100-0500",{"path":3435,"stem":3436,"title":3437,"authors":3438,"date":2958,"chapterOrder":3439,"chapterDepth":117,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0600-ji-qi-ren-gong-cheng-xie-fa-yu-ros2-ji-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0600-机器人工程写法与ROS2集成","机器人工程写法与 ROS2 集成",[7],"2100-0100-0600",{"path":3441,"stem":3442,"title":3443,"authors":3444,"date":2958,"chapterOrder":3445,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-boost-asio-yi-bu-io-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-Boost.Asio异步IO库","Boost.Asio异步IO库",[7],"2100-0100",{"path":3447,"stem":3448,"title":3449,"authors":3450,"date":2958,"chapterOrder":3451,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0200-eigen-xian-xing-dai-shu-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0200-Eigen线性代数库","Eigen线性代数库",[7],"2100-0200",{"path":3453,"stem":3454,"title":3455,"authors":3456,"date":2958,"chapterOrder":3457,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0300-opencv-ji-suan-ji-shi-jue-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0300-OpenCV计算机视觉库","OpenCV计算机视觉库",[7],"2100-0300",{"path":3459,"stem":3460,"title":3461,"authors":3462,"date":2958,"chapterOrder":3463,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0400-pcl-dian-yun-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0400-PCL点云库","PCL点云库",[7],"2100-0400",{"path":3465,"stem":3466,"title":3467,"authors":3468,"date":2958,"chapterOrder":3469,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0500-sophus-li-qun-li-dai-shu-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0500-Sophus李群李代数库","Sophus 李群李代数库",[7],"2100-0500",{"path":3471,"stem":3472,"title":3473,"authors":3474,"date":2958,"chapterOrder":3475,"chapterDepth":2976,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-chang-yong-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-常用库","常用库学习",[7],"2100",{"path":3477,"stem":3478,"title":3479,"authors":3480,"date":2958,"chapterOrder":3481,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0100-CMakePresets与构建安装","CMakePresets与构建安装",[7],"2200-0100",{"path":3483,"stem":3484,"title":3485,"authors":3486,"date":2958,"chapterOrder":3487,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0200-ding-ceng-cmake-yu-gong-gong-bian-yi-xuan-xiang","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0200-顶层CMake与公共编译选项","顶层CMake与公共编译选项",[7],"2200-0200",{"path":3489,"stem":3490,"title":3491,"authors":3492,"date":2958,"chapterOrder":3493,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0300-src-yu-lib-mo-kuai-cmake-xiang-jie","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0300-src与lib模块CMake详解","src与lib模块CMake详解",[7],"2200-0300",{"path":3495,"stem":3496,"title":3497,"authors":3498,"date":2958,"chapterOrder":3499,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0400-di-san-fang-ku-yi-lai-xie-fa","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0400-第三方库依赖写法","第三方库依赖写法",[7],"2200-0400",{"path":3501,"stem":3502,"title":3503,"authors":3504,"date":2958,"chapterOrder":3505,"chapterDepth":73,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0500-模板扩展与常见问题","模板扩展与常见问题",[7],"2200-0500",{"path":3507,"stem":3508,"title":3509,"authors":3510,"date":2958,"chapterOrder":3511,"chapterDepth":2976,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":2963},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-CMake工程模板","CMake工程模板",[7],"2200",{"path":2960,"stem":3513,"title":3514,"authors":3515,"date":2958,"chapterOrder":3516,"chapterDepth":2976,"docKey":2959,"docRoot":2960,"docTitle":2961,"isWikiDoc":120,"isWikiIndex":120},"wiki\u002F2023-10-05-Cplusplus教学\u002Findex","C\u002FC++教程",[7],null,[3518,3520,3523,3526],{"name":7,"image":3519},"\u002Fimages\u002Fmember_photo\u002F董佳辉.jpg",{"name":3521,"image":3522},"宫金良","\u002Fimages\u002Fmember_photo\u002F宫金良.jpg",{"name":3524,"image":3525},"巩丽","\u002Fimages\u002Fmember_photo\u002F巩丽.png",{"name":3527,"image":3528},"张彦斐","\u002Fimages\u002Fmember_photo\u002F张彦斐.jpg",1792431899493]