2016-08-25 47 views
0

我閱讀了一些關於相對路徑的主題,但我一直在他們周圍徘徊數小時而沒有回答。 的代碼是這樣的:將「../xx.txt」附加到相對路徑在C++中起作用

std::string path = "./Debug/"; 
path.append("../hi.txt/"); 
std::ifstream inFile(path); 
std::string str; 
if (inFile.is_open()) 
{ 
    inFile >> str; 
    std::cout << str << std::endl; 
} 
else 
{ 
    std::cout << "open failed" << std::endl; 
} 

此代碼將輸出:「打開失敗」。 任何幫助,將不勝感激。

+3

是hi.txt真是一個子目錄?如果不是,那就不要在它後面加一個斜線, –

+0

我絕對確認 –

回答

4

當您在路徑末尾放置/時,它會通知系統將其作爲目錄執行(即列出其內容)。由於hi.txt不是目錄,因此無法將其作爲目錄執行,因此失敗(假設您沒有命名目錄hi.txt)。

要解決這個問題:刪除/

std::string path = "./Debug/" ; 
path.append("../hi.txt") ; 
+0

通過「執行」你的意思是「打開」 –

+0

@ M.M不一定。符號鏈接添加有趣的業務。我指的是Linux如何將目錄(和目錄的符號鏈接)調用爲設置了執行標誌。如果'/ path/to/a'是目錄'/ path/to/b'的符號鏈接,那麼'ls -la/path/to/a'會給你關於符號鏈接的信息,但是'ls - la/path/to/a /'會給你和'ls -la/path/to/b /'相同的輸出,因爲它會像文件系統一樣「執行」該文件並解析到正確的目錄。但簡單來說,這絕對是一個「開放」的操作。 – iAdjunct

相關問題