新闻详情

新闻详情

首页 / 资讯中心 / 详情

C++17 filesystem 实战:路径拼接、目录遍历和错误处理

发布时间:2026/11/15 6:44:54来源:尧图网络
C++17 filesystem 实战:路径拼接、目录遍历和错误处理
C17 filesystem 实战路径拼接、目录遍历和错误处理手工拼路径字符串容易混淆斜杠、目录和文件名。C17 的 std::filesystem 提供 path 与一组文件系统操作让代码直接表达“路径”“文件大小”“遍历目录”等意图。最低标准C17。下面示例只读取当前目录不创建或删除文件。1. 用 path 拼接路径#includefilesystem#includeiostream#includesystem_errorintmain(){namespacefsstd::filesystem;fs::path filefs::path(logs)/app.log;std::coutfile.generic_string()\n;std::coutfile.filename().string()\n;std::coutfile.extension().string()\n;std::error_code ec;fs::directory_iteratorit(.,ec),end;if(ec){std::cerrec.message()\n;return1;}intshown0;while(it!endshown3){std::coutit-path().filename().string()\n;shown;it.increment(ec);if(ec){std::cerrec.message()\n;return1;}}}前三行分别是 logs/app.log、app.log、.log后面的目录项随运行位置而变化遍历顺序不保证固定。需要稳定展示时应先收集路径再排序。2. error_code 版本也要认真检查很多 filesystem 函数同时提供抛异常版本和接收 std::error_code 的版本。批量扫描文件时后者方便记录错误后继续处理。不能只检查迭代器构造遍历过程中权限或目录状态变化同样可能让 increment 失败。error_code 重载主要改变文件系统错误的报告方式不代表程序从此不可能因内存分配等原因抛异常。是否继续处理、跳过目录还是终止应由业务策略决定。3. exists 不是后续操作的保证“先 exists再打开”之间文件可能已经被其他进程移动或删除。应始终检查真正的打开、读取或写入结果exists 只能描述检查瞬间的状态不能充当安全保证。同理file_size 需要适用的文件对象并可能失败。对目录、权限不足的路径或不存在的文件不要把返回结果当成正常大小直接使用。4. 路径规范化和安全边界lexically_normal 进行词法整理不访问文件系统canonical 会解析实际存在的路径并处理符号链接两者不能混用。若用户输入路径简单拼接或消去“…”不足以保证它位于指定目录内符号链接与并发变化也需要考虑。跨平台时路径字符串编码与大小写规则也可能不同。接口内部尽量保持 path 类型只有与界面、协议或外部库交互时才做明确的编码转换。速记用 path 拼接用实际操作结果判断成功遍历和错误都按发生时处理不要把路径字符串看成可靠的访问权限边界。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/15 4:54:16

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/15 2:04:12

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/14 10:11:15

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/14 17:14:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/14 16:35:50

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/15 4:06:36

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉