2014-03-04 107 views
1

我需要在C++中將相對路徑更改爲絕對路徑。我正在使用realpath,但輸出錯誤!在Linux中使用實時路徑在C++中將相對路徑更改爲絕對路徑

char resolved_path[200]; 
realpath("$HOME/Desktop/SumoSVN/bin", resolved_path); 
cout << resolved_path << endl; 

我期待着得到這樣的輸出:/家庭/瑪尼/桌面/ SumoSVN/bin中

,但我得到這個!: /家/瑪尼/桌面/ VENTOS/$ HOME

我做錯了什麼?

+1

您可能意指'「$ HOME/Desktop/SumoSVN/bin」' –

回答

0

Shell或環境變量(請參閱environ(7))未被realpath(3)擴展。您需要致電getenv(3)。你可以嘗試

std::string homedir(getenv("HOME")); 
realpath((homedir+"/Desktop/SumoSVN/bin").c_str(), resolved_path); 

參見wordexp(3)(也許glob(3))。閱讀path_resolution(7) & glob(7)。請注意,它是擴展命令參數的shell。

順便說一句,當前目錄是getcwd(3)

PS。在一些不同語言的裝置上不存在Desktop:它變成例如在法國Debian或Ubuntu或Mint系統上的Bureau