2011-11-14 57 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中的路徑這太棒了! –

相關問題