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