2011-11-14 59 views
-2
#include <boost/filesystem/path.hpp> 
#include <boost/filesystem/operations.hpp> 
using namespace std; 
using namespace boost; 


int main() 
{ 
    boost::filesystem::path src("/usr/BoostCode/1.txt"); 
    boost::filesystem::path dst("/usr"); 
    boost::filesystem::copy_file(src, dst); 
} 

我想要做的是::从 “在/ usr/BoostCode” 目录 “的/ usr” 编译复制文件 “的1.txt” G ++ bfs.cpp -lboost_system -lboost_filesystem -o BFS 要运行: ./bfs升压C++文件系统程序无法运行

得到一个错误:终止叫做抛出的一个实例后 '的boost :: exception_detail :: clone_impl>>>' what():boost :: filesystem :: copy_file:文件存在: “/usr/BoostCode/1.txt”,“/ usr” Aborted

请帮助这段代码错了什么? 在此先感谢

+0

可能是一个权限问题。 – StackedCrooked

回答

3

难道你不需要指定完整的目的地吗?

boost::filesystem::path dst("/usr/1.txt"); 
3

dst变量应该保存文件的新名称,而不仅仅是目录。现在,您正试图将该文件作为替代文件复制到目录,该目录失败。请参阅the boost::filesystem::copy_file文档。

3

插入线:

dst = dst/src.filename(); 

把它创建dst后。你的程序将按照你的预期工作。它抱怨/usr已经存在,所以它不能复制它。

+0

他们已经重新定义了运算符'/'来连接boost 8D中的路径这太棒了! –

相关问题