C++:Boost文件系统复制_文件出错

C++:Boost文件系统复制_文件出错,c++,boost,boost-filesystem,C++,Boost,Boost Filesystem,我在使用copy_file函数时遇到了一些问题。我的程序很简单,我只是想把一个文本文件从一个地方复制到另一个地方 下面的代码出现了一个调试错误!因为调用了abort int main() { path src_path = "C:\\src.txt"; path dst_path = "C:\\dst.txt"; cout << "src exists = " << exists( src_path ) << endl; // Prints True bo

我在使用copy_file函数时遇到了一些问题。我的程序很简单,我只是想把一个文本文件从一个地方复制到另一个地方

下面的代码出现了一个调试错误!因为调用了abort

int main()
{
path src_path = "C:\\src.txt";
path dst_path = "C:\\dst.txt";

cout << "src exists = " << exists( src_path ) << endl;  // Prints True
boost::filesystem::copy_file( src_path, dst_path );

return 0;
}
如果我看看Stackoverflow上的其他一些代码示例,我就不会注意到我做错了什么。我觉得我错过了一些明显的东西


我已经安装了Vo1.4.47,我使用Visual C++ 2010。

< P>我想如果你使用Booo::FrimeSeMe2应该是 boost::filesystem2::copysrc\u路径,dest\u路径;
copy\u文件应该被弃用。

我认为如果您使用的是boost::filesystem2,它应该被弃用 boost::filesystem2::copysrc\u路径,dest\u路径;
copy_文件应该已经弃用。

我猜目标文件已经存在

委员会:

模板无效复制\u fileconst Path1&从\u fp、const Path2&到\u fp; 要求:Path1::external_string_类型和Path2::external_string_类型是相同的类型

效果:将_fp resolves to文件的内容和属性复制到_fp resolves to文件。 抛出:如果从_fp.empty | | |到_fp.empty | |发生基本_文件系统|错误!从| fp | |存在!_常规_文件是否从| fp |存在到| fp

一个简单的测试如下:

#include <iostream>
#include <boost/filesystem.hpp>

int main()
{
    using namespace boost::filesystem;
    path src_path = "test.in";
    path dst_path = "test.out";

    std::cout << "src exists = " << std::boolalpha << exists( src_path ) << std::endl;  // Prints true
    try
    {
        boost::filesystem::copy_file( src_path, dst_path );
    } catch (const boost::filesystem::filesystem_error& e)
    {
        std::cerr << "Error: " << e.what() << std::endl;
    }

    return 0;
}

在第二次运行时:

我猜目标文件存在

委员会:

模板无效复制\u fileconst Path1&从\u fp、const Path2&到\u fp; 要求:Path1::external_string_类型和Path2::external_string_类型是相同的类型

效果:将_fp resolves to文件的内容和属性复制到_fp resolves to文件。 抛出:如果从_fp.empty | | |到_fp.empty | |发生基本_文件系统|错误!从| fp | |存在!_常规_文件是否从| fp |存在到| fp

一个简单的测试如下:

#include <iostream>
#include <boost/filesystem.hpp>

int main()
{
    using namespace boost::filesystem;
    path src_path = "test.in";
    path dst_path = "test.out";

    std::cout << "src exists = " << std::boolalpha << exists( src_path ) << std::endl;  // Prints true
    try
    {
        boost::filesystem::copy_file( src_path, dst_path );
    } catch (const boost::filesystem::filesystem_error& e)
    {
        std::cerr << "Error: " << e.what() << std::endl;
    }

    return 0;
}

第二次运行时:

权限或共享冲突。您应该捕获异常并向它们显示我已经查找了如何使用try/catch,但我不确定如何或是否可以在不知道异常数据类型的情况下打印异常。我只能用默认的。。。到目前为止。我认为文件系统会引发一个名为“basic_filesystem_error”的对象,这是一个未在我的includes中导入的对象{std::cout权限或共享冲突。您应该捕获异常并显示它们。我已经查找了如何使用try/catch,但我不确定如何或是否可以在不知道异常数据类型的情况下打印异常。我只能使用默认的…catch来捕获它。我认为文件系统引发了一个名为“basic_filesystem_error”的对象,未在my includes中导入的对象。请尝试{/*code*/}catchstd::exception const&e{std::cout Ah ha,你帮我解决了这个问题。这是一个由两部分组成的问题。当我第一次尝试copy_file函数时,它试图将一个文件复制到一个它已经存在的地方。请解释。然后我尝试了上面的代码,这导致了一个权限错误,因为显然我的设置不允许我的程序将文件复制到根路径C:\@akaGrim:从某种意义上说,这是个好消息,我应该得到两个接受:LOL。谢谢你的反馈啊哈,你帮我解决了这个问题。这是一个分为两部分的问题。当我第一次尝试copy_file函数时,它试图将一个文件复制到一个它已经存在的地方。你的解释。然后我尝试了上面的代码,它导致了一个权限错误,因为显然我的设置不允许我的程序将文件复制到根路径C:\@akaGrim:从某种程度上说,这是个好消息,我应该得到两个接受:LOL。谢谢你的反馈