2013-09-28 48 views
0

我使用Boost::Filesystem在Linux中遍歷目錄。如何避免在boost :: filesystem :: path中存儲重定向?

每當我需要重新定義路徑是一個目錄後,我做同樣的事情到這一點:

auto p = boost::filesystem::current_path(); 
p /= "../"; 

的問題是,當我輸出「P」,它會告訴我帶「../」的路徑仍在加緊。 每次我決定返回一個目錄時,我如何得到這個評估。我想返回一個目錄來縮短路徑,而不是每次都使路徑變得越來越長。

我想到這些功能之一可能做到這一點,因爲他們採取了路徑參考,
boost::filesystem::absolute(...)
boost::filesystem::canonical(...)
但稱他們和再輸出「P」之後,結果仍然顯示」 .. /「;

path& make_preferred()也不起作用。

回答

1

canonicalabsolute就是這樣做的方法。你使用返回的路徑嗎?給定的路徑被視爲一個常量引用,所以它不會被修改。從升壓手冊:

path canonical(const path& p, const path& base = current_path()); 
path canonical(const path& p, system::error_code& ec); 
path canonical(const path& p, const path& base, system::error_code& ec); 

概述:轉換P,它必須存在,以有 沒有符號鏈接,點或點 - 點元素的絕對路徑。

+0

這是正確的。我錯誤地認爲通過的路徑會改變。 p = canonical(p);作品。 –

相關問題