2012-04-10 111 views
0

我有一個程序會有幾個資源文件,用戶可以將它們放在與可執行文件不在同一個文件夾中的計算機上。我如何打開這些文件?在工作目錄之外的C++中打開一個文件

我發現了很多答案,說事情不工作的原因是該文件不在工作目錄中。我試過提供完全合格的路徑:

ifstream str; 
str.open("/home/millere/foo.txt") 

但這是不成功的。我知道路徑是正確的(複製和粘貼)。我找不到任何文檔,但我認爲它必須是可能的。 (例如~作品以外的任何地方的vim ~/foo.txt)。

+3

你確定要'iostream'而不是'ifstream'嗎? – Maxpm 2012-04-10 17:59:17

+0

是的,錯字。固定。 – Ethan 2012-04-11 13:36:13

回答

2

假設你打算使用ifstream而不是iostream,那麼你的代碼是正確的。 ifstream可以使用文件的路徑以及工作目錄中文件的名稱。

如果文件不存在,則不會拋出異常,但會設置失敗位。在嘗試對流進行任何操作之前,您應該檢查這一點。

std::ifstream input("/home/bob/stuff.txt"); 

if (!input) std::cerr << "Could not open the file!" << std::endl; 

else 
{ 
    // ... 
} 

如果仍然無法提取文件數據,問題是在你的代碼別的地方。

+0

非常好,謝謝。我不知道是什麼讓它不能工作。 – Ethan 2012-04-11 13:42:56

+0

@Maxpm'open()'函數可以使用一個路徑在另一個目錄中打開一個文件嗎? for xample'/ etc/passwd /'? – Edeph 2013-10-19 15:50:53