当前位置: 首页 > news >正文

C++ 第十五章第十六章 案例教程 + 全课程回顾

C++ 第十五章&第十六章 案例教程 + 全课程回顾

说明:本教程为C++系列的完结篇。第十五章聚焦文件系统与正则表达式(C++17 std::filesystem、std::regex),第十六章讲解C++17/20核心新特性(std::optional、std::variant、结构化绑定、if constexpr、概念等)。最后对全部十六章进行系统回顾,构筑完整的C++知识体系。


第一部分:第十五章 文件系统与正则表达式

一、背景故事:小杨需要批量处理文件并提取信息

小杨有一个目录,里面存放了上千个日志文件,文件名格式为log_20250101.txt。他需要找出所有符合日期格式的文件,读取内容并提取包含错误信息的行。手工操作太繁琐,他决定使用C++17的std::filesystem遍历目录,用std::regex匹配日期和错误信息。

二、C++17 文件系统库(std::filesystem)

头文件:,命名空间:std::filesystem(C++17起)。

2.1 基本操作:路径、存在性、文件大小

#include<iostream>#include<filesystem>namespacefs=std::filesystem;intmain(){fs::path p="/home/user/data.txt";std::cout<<"文件名: "<<p.filename()<<std::endl;// data.txtstd::cout<<"父路径: "<<p.parent_path()<<std::endl;// /home/userstd::cout<<"扩展名: "<<p.extension()<<std::endl;// .txtif(fs::exists(p)){std::cout<<"文件大小: "<<fs::file_size(p)<<" bytes"<<std::endl;}// 创建目录fs::create_directory("backup");// 复制文件fs::copy(p,"backup/data_copy.txt",fs::copy_options::overwrite_existing);// 删除文件fs::remove("temp.txt");return0;}

2.2 遍历目录

voidlistDirectory(constfs::path&dir){for(constauto&entry:fs::directory_iterator(dir)){if(fs::is_regular_file(entry)){std::cout<<"文件: "<<entry.path().filename()<<std::endl;}elseif(fs::is_directory(entry)){std::cout<<"目录: "<<entry.path().filename()<<std::endl;}}}// 递归遍历(C++17)voidlistRecursive(constfs::path&dir){for(constauto&entry:fs::recursive_directory_iterator(dir)){std::cout<<entry.path().string()<<std::endl;}}

2.3 路径拼接与修改

fs::path base="/var/log";fs::path full=base/"app.log";// 运算符/自动添加分隔符std::cout<<full<<std::endl;// /var/log/app.logfs::path p="a/b/c.txt";p.replace_extension(".bak");// a/b/c.bak

三、正则表达式(std::regex)

头文件:。C++11引入。

3.1 基本匹配

#include<regex>std::string text="我的电话是138-1234-5678,邮箱是test@example.com";std::regexphoneRegex(R"(\d{3}-\d{4}-\d{4})");// 原始字符串std::smatch match;if(std::regex_search(text,match,phoneRegex)){std
http://www.gsyq.cn/news/1352436.html

相关文章:

  • 终极指南:快速掌握Vue 3树形结构组件的完整使用技巧
  • 第七章 指令微调学习(四)基于指令数据对大语言模型进行微调
  • 泰国双清包税哪家好?泰国清关哪家强?2026泰国海运清关强的公司+泰国陆运清关强的公司合集 - 栗子测评
  • 2026避雷塔厂家推荐:新疆角钢塔厂家+变电站架构+新疆钢管塔厂家+钢管杆厂家推荐精选 - 栗子测评
  • 2026 小众暴利 AI 项目,AI短剧带货,简单复制就能盈利
  • 港口数智升级|亚控KingSCADA打造设备精细化运维平台
  • 衔接器CC Switch 小白图文安装,接入Claude Opus4.7+deekseep V4 +千问等等都不在话下,再也不用担心无法配置几个第三方大模型。
  • CANN-Ascend-C存储体系-昇腾NPU的四级缓存怎么用才算对
  • 深入了解指针(3)
  • 2026年最严重终端安全事件:Microsoft Defender双零日漏洞深度解析与防御实战
  • Ollama API 详解(学习笔记)
  • 北光恒电:安捷伦DSOS系列示波器(DSOS104/254/404/804)不开机、输出不正常故障排查
  • 什么是运算符
  • 【NotebookLM风格一致性终极指南】:20年AI产品专家亲授3大校准框架与5步落地法
  • 别再死磕论文修改!paperxie 一站式解决查重 + 降 AIGC 两大难题
  • CAN一致性-物理层--高压通信范围测试
  • 2026年评价高的惠州短视频剪辑/惠州短视频运营专业公司推荐 - 品牌宣传支持者
  • 图智能平台产品选型指南:如何用关系数据提升洞察、风控与决策能力
  • 2026 年 5 月 AI 热点:大模型、硬件、人形机器人全面升级
  • CANN内存优化实战:为什么HBM带宽总是第一个打满的
  • Python __slots__ 入门指南
  • 基于魔珐星云打造的办公室助理数字人:高效办公、智能协作、语音随时交互
  • 回测年化50%,实盘亏20%:99%量化新手都会犯的7个致命错误
  • 让ClaudeCode成本爆降89%,这个开源工具有点猛...
  • Spring Boot 集成阿里云 OSS 实现文件上传下载的完整指南(从概念到代码)
  • 用 PS 抠公章最详细步骤|零基础一键抠取透明公章
  • 解锁Linux无线网卡配置:RTL8821CU驱动实战深度指南
  • 量子纠错码与逻辑门优化实现技术解析
  • Keil µVision TAB显示异常问题分析与解决方案
  • A51汇编器Error 21解析与8051开发实践