You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

std::filesystem::copy_file报Invalid argument错误的解决方法

修复std::filesystem::copy_file的Invalid argument错误

问题根源

std::filesystem::copy_file要求第二个参数必须是具体的文件路径,你传入的root_dir是目录路径,不符合函数参数规则,这就是触发"Invalid argument"错误的直接原因。

修复代码

修改目标路径构造逻辑,将源文件名拼接到目标目录后,生成完整的目标文件路径:

int main(){

    std::filesystem::path root_dir = "/home/xyz/study/misis2023f-22-3-kovaleva-m-a/prj.cw/test_dir";

    std::filesystem::path from_path = "/home/xyz/study/misis2023f-22-3-kovaleva-m-a/prj.cw/test_dir/misis2023_kovaleva_m_a/make.cpp";
    std::cout << std::filesystem::exists(from_path) << '\n';

    // 拼接目录与源文件名,生成合法的目标文件路径
    std::filesystem::path to_path = root_dir / from_path.filename();
    std::filesystem::copy_file(from_path, to_path, std::filesystem::copy_options::update_existing);
}

关键说明

  • from_path.filename()会提取源路径中的纯文件名(此处为make.cpp),使用/运算符是std::filesystem::path推荐的跨平台路径拼接方式,能自动适配不同系统的路径分隔符。
  • 若需自定义目标文件名,直接替换from_path.filename()即可,例如root_dir / "renamed_make.cpp"。
  • 如果你的需求是复制整个目录(包含子目录和文件),请使用std::filesystem::copy函数,并搭配copy_options::recursive选项。

内容的提问来源于stack exchange,提问作者su-mrak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 14:57:17