最直接的方法是调用 std::filesystem::exists(),但需注意其可能抛出 filesystem_error 异常;推荐使用 noexcept 版本并传入 error_code 参数以区分“不存在”和“无权限”等错误。

用 std::filesystem::exists() 最直接,但要注意异常和权限
标准答案就是调用 std::filesystem::exists(),它返回 bool,语义清晰。但它不是“无副作用”的纯判断——如果路径不可访问(比如权限不足、挂载点失效、符号链接断裂),默认会抛出 std::filesystem::filesystem_error。
常见错误现象:std::filesystem::exists("xxx") 突然 crash 或抛异常,尤其在跨平台或读取网络路径时;你以为它只是查个存在性,其实它底层做了访问试探。
- 加
noexcept版本:传入第二个参数std::error_code& ec,避免异常,例如:std::filesystem::exists(p, ec),失败时ec被设为具体错误码,exists()返回false - 别对非法路径(如空字符串、含